<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet GNOME</title>
  <updated>2024-02-09T08:03:32Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>GNOME Sysadmin Team</name>
    <email>gnome-sysadmin@gnome.org</email>
  </author>
  <id>https://planet.gnome.org/atom.xml</id>
  <link href="https://planet.gnome.org/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://pubsubhubbub.appspot.com/" rel="hub"/>
  <link href="https://planet.gnome.org/" rel="alternate"/>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/tchx84/?p=2784</id>
    <link href="https://blogs.gnome.org/tchx84/2024/02/08/gameeky-released/" rel="alternate" type="text/html"/>
    <title>Gameeky released</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">After three months of development, Gameeky reaches its first public release. This project is the result of nearly fifteen years of experience contributing to education projects and mentoring young learners. I am happy to share it everyone! Although this project can still be considered in early stages of development, it’s not far from being feature … <a class="more-link" href="https://blogs.gnome.org/tchx84/2024/02/08/gameeky-released/">Continue reading<span class="screen-reader-text"> "Gameeky released"</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>After three months of development, <a href="https://flathub.org/apps/dev.tchx84.Gameeky" rel="noopener" target="_blank">Gameeky</a> reaches its first public release. This project is the result of nearly fifteen years of <a href="https://www.linkedin.com/in/tchx84/" rel="noopener" target="_blank">experience</a> contributing to education projects and mentoring young learners.</p>
<p>I am happy to share it everyone!</p>
<p><img alt="" class="alignleft wp-image-2844 size-large" height="615" src="https://blogs.gnome.org/tchx84/files/2024/02/01-1024x750.png" width="840"/></p>
<p>Although this project can still be considered in early stages of development, it’s not far from being feature complete. This first release comes the following:</p>
<ul>
<li>A game launcher to manage projects more easily.</li>
<li>A game client to play games cooperatively.</li>
<li>A scene editor to create and modify game worlds.</li>
<li>An entity editor to create and modify game objects.</li>
<li>A Python library for a LOGO-like experience.</li>
<li>Plugins support to extend the games logic and entities behavior.</li>
<li>An offline beginner’s guide.</li>
<li>The first thematic pack to create role-playing games in a medieval fantasy setting.</li>
<li>And more…</li>
</ul>
<p>Gameeky is available in English and Spanish, including the beginner’s guide.</p>
<p><img alt="" class="alignleft wp-image-2847 size-large" height="615" src="https://blogs.gnome.org/tchx84/files/2024/02/02-1024x750.png" width="840"/></p>
<p>The recommended installation method is through GNOME Software from <a href="https://flathub.org/apps/dev.tchx84.Gameeky" rel="noopener" target="_blank">Flathub</a>. Alternatively, it can also be installed  from the terminal:</p>
<pre>flatpak --user install flathub dev.tchx84.Gameeky</pre>
<p>The first thematic pack can also be installed from the terminal:</p>
<pre>flatpak --user install flathub dev.tchx84.Gameeky.ThematicPack.FreedomValley</pre>
<p>Moving forward, these are the next steps for Gameeky:</p>
<ul>
<li>Improve the user experience and accessibility, e.g., supporting undo operations on the editors and allowing these editors to be fully usable with the keyboard.</li>
<li>Stress test the entities system, e.g., figuring out what else can’t be modeled with it and improve it without making it unnecessarily complex.</li>
<li>Address performance issues, e.g., optimizing the rendering pipeline and the communication protocol.</li>
<li>Create new thematic packs for different interests, e.g., robotics, sci-fi, urban cities, etc.</li>
<li>Produce more in-depth tutorials, e.g., videos to show how to create new thematic packs from scratch, an introductory course to Python built on Gameeky, etc.</li>
<li>Support more languages, e.g., providing translations of its user interface and beginner’s guide.</li>
<li>Other important miscellaneous tasks, e.g., designing a proper icon for the desktop.</li>
</ul>
<p>To achieve some of these goals I plan to take Gameeky to its users, by organizing workshops and hackathons with students and teachers here in Paraguay.</p>
<p>If you know any organization or individual that might be interested in supporting these workshops financially or otherwise, please feel free to <a href="mailto:contact@tchx84.dev">contact</a> me.</p>
<p><a href="https://flathub.org/apps/dev.tchx84.Gameeky" rel="noopener" target="_blank"><img alt="" class="alignleft" height="80" src="https://flathub.org/_next/image?url=%2Fapi%2Fbadge%3Flocale%3Den%26light&amp;w=256&amp;q=75" width="240"/></a></p></div>
    </content>
    <updated>2024-02-08T13:33:26Z</updated>
    <published>2024-02-08T13:33:26Z</published>
    <category term="projects"/>
    <category term="education"/>
    <category term="gameeky"/>
    <category term="video game"/>
    <author>
      <name>Martín Abente Lahaye</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/tchx84</id>
      <link href="https://blogs.gnome.org/tchx84/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/tchx84" rel="alternate" type="text/html"/>
      <subtitle>Just another GNOME Blogs site</subtitle>
      <title>Martín Abente Lahaye</title>
      <updated>2024-02-08T18:05:52Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-GB">
    <id>https://meeksfamily.uk/~michael/blog/2024/02/06/2024-02-06</id>
    <link href="https://meeksfamily.uk/~michael/blog/2024-02-06.html" rel="alternate" type="text/html"/>
    <title xml:lang="en-GB">2024-02-06 Tuesday</title>
    <content type="xhtml" xml:lang="en-GB"><div xmlns="http://www.w3.org/1999/xhtml"><ul> <!-- -->
	<li>
		Up early, breakfast, Eurostar home; started
	catching up on E-mail.
	</li>
</ul></div>
    </content>
    <updated>2024-02-06T21:00:00Z</updated>
    <published>2024-02-06T21:00:00Z</published>
    <source>
      <id>https://meeksfamily.uk/~michael/blog/index.atom</id>
      <author>
        <name>Michael Meeks</name>
        <email>michael.meeks@collabora.com</email>
        <uri>https://meeksfamily.uk/~michael/blog/index.atom</uri>
      </author>
      <link href="https://meeksfamily.uk/~michael/blog" rel="alternate" type="text/html"/>
      <link href="https://meeksfamily.uk/~michael/blog/index.atom" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-GB">Copyright 1999-2015 Michael Meeks</rights>
      <subtitle xml:lang="en-GB">things, of varying degrees of uselessness, that I did</subtitle>
      <title xml:lang="en-GB">Stuff Michael Meeks is doing</title>
      <updated>2024-02-06T21:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://ramcq.net/?p=275</id>
    <link href="https://ramcq.net/2024/02/06/flathub-pros-and-cons-of-direct-uploads/" rel="alternate" type="text/html"/>
    <title>Flathub: Pros and Cons of Direct Uploads</title>
    <summary>I attended FOSDEM last weekend and had the pleasure to participate in the Flathub / Flatpak BOF on Saturday. A lot of the session was used up by an extensive discussion about the merits (or not) of allowing direct uploads versus building everything centrally on Flathub’s infrastructure, and related concerns such as automated security/dependency scanning. […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I attended FOSDEM last weekend and had the pleasure to participate in the <a href="https://fosdem.org/2024/schedule/event/fosdem-2024-3715-flathub-flatpak-bof/">Flathub / Flatpak BOF</a> on Saturday. A lot of the session was used up by an extensive discussion about the merits (or not) of allowing direct uploads versus building everything centrally on Flathub’s infrastructure, and related concerns such as automated security/dependency scanning.</p>



<p>My original motivation behind the idea was essentially two things. The first was to offer a simpler way forward for applications that use language-specific build tools that resolve and retrieve their own dependencies from the internet. Flathub doesn’t allow network access during builds, and so a lot of manual work and additional tooling is currently needed (see <a href="https://docs.flatpak.org/en/latest/python.html">Python</a> and <a href="https://docs.flatpak.org/en/latest/electron.html">Electron</a> Flatpak guides). And the second was to offer a maybe more familiar flow to developers from other platforms who would just build something and then run another command to upload it to the store, without having to learn the syntax of a new build tool. There were many valid concerns raised in the room, and I think on reflection that this is still worth doing, but might not be as valuable a way forward for Flathub as I had initially hoped.</p>



<p>Of course, for a proprietary application where Flathub never sees the source or where it’s built, whether that binary is uploaded to us or downloaded by us doesn’t change much. But for an FLOSS application, a direct upload driven by the developer causes a regression on a number of fronts. We’re not getting too hung up on the “malicious developer inserts evil code in the binary” case because Flathub already works on the model of verifying the developer and the user makes a decision to trust that app – we don’t review the source after all. But we do lose other things such as our infrastructure building on multiple architectures, and visibility on whether the build environment or upload credentials have been compromised unbeknownst to the developer.</p>



<p>There is now a manual review process for when apps change their metadata such as name, icon, license and permissions – which would apply to any direct uploads as well. It was suggested that if only heavily sandboxed apps (eg no direct filesystem access without proper use of portals) were permitted to make direct uploads, the impact of such concerns might be somewhat mitigated by the sandboxing.</p>



<p>However, it was also pointed out that my go-to example of “Electron app developers can upload to Flathub with one command” was also a bit of a fiction. At present, none of them would pass that stricter sandboxing requirement. Almost all Electron apps run old versions of Chromium with less complete portal support, needing sandbox escapes to function correctly, and Electron (and Chromium’s) sandboxing still needs additional tooling/downstream patching to run inside a Flatpak. Buh-boh.</p>



<p>I think for established projects who already ship their own binaries from their own centralised/trusted infrastructure, and for developers who have understandable sensitivities about binary integrity such such as encryption, password or financial tools, it’s a definite improvement that we’re able to set up direct uploads with such projects with less manual work. There are already quite a few applications – including verified ones – where the build recipe simply fetches a binary built elsewhere and unpacks it, and if this already done centrally by the developer, repeating the exercise on Flathub’s server adds little value.</p>



<p>However for the individual developer experience, I think we need to zoom out a bit and think about how to improve this from a tools and infrastructure perspective as we grow Flathub, and as we seek to raise funds for different sources for these improvements. I took notes for everything that was mentioned as a tooling limitation during the BOF, along with a few ideas about how we could improve things, and hope to share these soon as part of an RFP/RFI (Request For Proposals/Request for Information) process. We don’t have funding yet but if we have some prospective collaborators to help refine the scope and estimate the cost/effort, we can use this to go and pursue funding opportunities.</p></div>
    </content>
    <updated>2024-02-06T10:57:27Z</updated>
    <published>2024-02-06T10:57:27Z</published>
    <category term="Flatpak"/>
    <category term="BOF"/>
    <category term="flathub"/>
    <category term="flatpak"/>
    <category term="FOSDEM"/>
    <category term="gnome"/>
    <author>
      <name>ramcq</name>
    </author>
    <source>
      <id>https://ramcq.net</id>
      <link href="https://ramcq.net/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://ramcq.net" rel="alternate" type="text/html"/>
      <subtitle>The personal blog of Robert McQueen</subtitle>
      <title>Robotic Tendencies</title>
      <updated>2024-02-06T10:57:27Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-GB">
    <id>https://meeksfamily.uk/~michael/blog/2024/02/05/2024-02-05</id>
    <link href="https://meeksfamily.uk/~michael/blog/2024-02-05.html" rel="alternate" type="text/html"/>
    <title xml:lang="en-GB">2024-02-05 Monday</title>
    <content type="xhtml" xml:lang="en-GB"><div xmlns="http://www.w3.org/1999/xhtml"><ul> <!-- -->
	<li>
		Up lateish, off to the LibreOffice hack-fest,
	caught up with Caolan &amp; Skyler. Plugged away at a
	few fun hacking pieces, reviewed a patch or two, fun.
	Out for dinner with the board, staff, MC at <i>chez
	Leon</i>; up late, bid fond goodbyes to those I
	could find.
	</li>
</ul></div>
    </content>
    <updated>2024-02-05T21:00:00Z</updated>
    <published>2024-02-05T21:00:00Z</published>
    <source>
      <id>https://meeksfamily.uk/~michael/blog/index.atom</id>
      <author>
        <name>Michael Meeks</name>
        <email>michael.meeks@collabora.com</email>
        <uri>https://meeksfamily.uk/~michael/blog/index.atom</uri>
      </author>
      <link href="https://meeksfamily.uk/~michael/blog" rel="alternate" type="text/html"/>
      <link href="https://meeksfamily.uk/~michael/blog/index.atom" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-GB">Copyright 1999-2015 Michael Meeks</rights>
      <subtitle xml:lang="en-GB">things, of varying degrees of uselessness, that I did</subtitle>
      <title xml:lang="en-GB">Stuff Michael Meeks is doing</title>
      <updated>2024-02-06T21:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/hughsie/?p=9796</id>
    <link href="https://blogs.gnome.org/hughsie/2024/02/05/fwupd-auto-quitting-on-idle-harder/" rel="alternate" type="text/html"/>
    <title>fwupd: Auto-Quitting On Idle, Harder</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">In fwupd 1.9.12 and earlier we had the following auto-quit behavior: Auto-quit on idle after 2 hours, unless: Any thunderbolt controller, thunderbolt retimer or synaptics-mst devices exist. These devices are both super slow to query and also use battery power to query as you have to power on various hungry things and then power them … <a class="more-link" href="https://blogs.gnome.org/hughsie/2024/02/05/fwupd-auto-quitting-on-idle-harder/">Continue reading <span class="screen-reader-text">fwupd: Auto-Quitting On Idle, Harder</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In fwupd 1.9.12 and earlier we had the following auto-quit behavior: Auto-quit on idle after <strong>2 hours</strong>, unless:</p>
<ul>
<li>Any thunderbolt controller, thunderbolt retimer or synaptics-mst devices exist.</li>
</ul>
<p>These devices are both super slow to query and also use battery power to query as you have to power on various hungry things and then power them down to query for the current firmware version.</p>
<p>In 19.13, due to be released in a few days time, we now: Auto-quit after <strong>5 minutes</strong>, unless:</p>
<ul>
<li>Any thunderbolt controller, thunderbolt retimer or synaptics-mst devices exist.
</li><li>Any D-Bus client (that used or is using fwupd) is still alive, which includes gnome-software if it’s running in the background of the GNOME session
</li><li>The daemon took more than 500ms to start – on the logic it’s okay to wait 0.5 seconds on the CLI to get results to a query, but we don’t want to be waiting tens of seconds to check for updates on a deeply nested USB hub devices.</li>
</ul>
<p>The <em>tl;dr:</em> is that most laptop and desktop machines have Thunderbolt or MST devices, and so they <em>already had</em> fwupd running all the time before, and <em>continue to have</em> it running all the time now. Trading 3.3MB of memory and an extra process for instant queries on a machine with GBs of memory is probably worthwhile. For embedded machines like IoT devices, and for containers (that are using fwupd to update things like the dbx) fwupd was probably starting and then quitting after 2h before, and now <code>fwupd</code> is only going to be alive for 5 minutes before quitting.</p>
<p>If any of the thresholds (500 ms) or timeouts (5 mins) are offensive to you then it’s all configurable, see <code>man fwupd.conf</code> for details. Comments welcome.</p></div>
    </content>
    <updated>2024-02-05T13:25:35Z</updated>
    <published>2024-02-05T13:25:35Z</published>
    <category term="Uncategorized"/>
    <author>
      <name>hughsie</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/hughsie</id>
      <link href="https://blogs.gnome.org/hughsie/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/hughsie" rel="alternate" type="text/html"/>
      <subtitle>Blog about geeky stuff</subtitle>
      <title>Technical Blog of Richard Hughes</title>
      <updated>2024-02-05T17:03:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://olea.org/diario/2024/02/05/Wikimedia_update.html</id>
    <link href="https://olea.org/diario/2024/02/05/Wikimedia_update.html" rel="alternate" type="text/html"/>
    <title>Last activity in Wikimedia</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>A fast update of thing happening to me in the Wikimedia Movement in the last weeks:</p>

<ul>
  <li>We asked for a WM Rapid Grant for a new project we have conceptualized at <a href="http://laoficinacultural.org/">LaOficina</a>: <a href="https://meta.wikimedia.org/wiki/Grants:Programs/Wikimedia_Community_Fund/Rapid_Fund/SMALL_GLAM_SLAM_Pilot_1_(ID:_22444585)">SMALL GLAM SLAM Pilot 1</a>, to low entry barriers of software and practices adoption for <strong>very small GLAM organizations</strong>.</li>
  <li>Also, I have been granted an scholarship to attend the <a href="https://www.mediawiki.org/wiki/Wikimedia_Hackathon_2024/es">Wikimedia Hackathon 2024</a> event next May in Tallinn.</li>
  <li>And, as part of my travel connection, I plan to attend the more informal <a href="https://meta.wikimedia.org/wiki/GLAM_%2B_Commons_%2B_AI_sauna#Join_the_event">GLAM + Commons + AI sauna</a> in Helsinki. So, another Wikimedia GLAM overdose after the excellent Montevideo’s <a href="https://meta.wikimedia.org/wiki/GLAM_Wiki_2023/es">GLAM Wiki 2023</a> meeting.</li>
</ul>

<p>I’ve draft the main tasks for the hackathon. They are very big in scope but they would be adjousted with the results of the Pilot 1. Here they are:</p>

<ul>
  <li><a href="https://phabricator.wikimedia.org/T356626">SMALL GLAM SLAM Pilot 1 : Mediawiki/Wikabase curated lists</a></li>
  <li><a href="https://phabricator.wikimedia.org/T356627">SMALL GLAM SLAM Pilot 1 : curated lists of ontologies and data models</a></li>
  <li><a href="https://phabricator.wikimedia.org/T356625">SMALL GLAM SLAM Pilot 1 : Essence modeling with Wikibase experiment</a></li>
</ul>

<p>Lot’s of fun to come!</p></div>
    </summary>
    <updated>2024-02-04T23:00:00Z</updated>
    <published>2024-02-04T23:00:00Z</published>
    <category term="Wikimedia_Movement"/>
    <category term="LaOficina"/>
    <category term="hackathon"/>
    <category term="SMALL_GLAM_SLAM"/>
    <category term="GLAM"/>
    <category term="Tallinn"/>
    <category term="Helsinki"/>
    <source>
      <id>https://olea.org/</id>
      <author>
        <name>Ismael Olea</name>
      </author>
      <link href="https://olea.org/" rel="alternate" type="text/html"/>
      <link href="https://olea.org/feed-en.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Pastoreando procomunes desde 1994 — Pasturing the commons since 1994
 - just the English posts</subtitle>
      <title>Ismael Olea — web personal</title>
      <updated>2024-02-05T18:07:11Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://www.aryank.in/posts/2024-02-04-gnome-asia-nepal-2023/</id>
    <link href="https://www.aryank.in/posts/2024-02-04-gnome-asia-nepal-2023/" rel="alternate" type="text/html"/>
    <title>GNOME Asia Nepal 2023</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><h1>Namaste Everyone!</h1>
<p>Hi everyone, so it has been a while since the successful completion of GNOME Asia Summit 2023, but well, when you have back-to-back exams, it becomes hard to write up.</p>
<p>Last year GNOME Asia happened in Kathmandu Nepal from December 1 - 3. Like GNOME Asia 2022, it was an amazing experience, to say the least.</p>
<p>Nepal and India having really close cultural ties made it feel like we are at home without being there, the friendly people, scenic beauty, the superpower to use Hindi in situations where English wasn't recognised, or visiting our holiest sites, Nepal offered us every bit of amazingness we could have asked for.</p>
<p>If I get to talk about Nepal, it can be a really big separate blog post, but this is about GNOME Asia, so let's proceed in that regard.</p>
<h4><strong>Day 0 (Because indexing starts with 0 ;))</strong></h4>
<p>Before departing from India, I used my trimmer, you know, to look good, unfortunately, while hearing music I got so lost in it that I didn't secure the adjustable comb properly and trimmed with 0.5mm :D Lost my beard just before the trip, yipeeee.</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/day0_landing.png"/></p>
<p>We landed in Nepal on 29th December, and after having some struggle with getting a cab and taking lots of photos, we went on to our hotel. The hotel was really nice, so thanks GNOME for that :D</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/day0_hotel.png"/></p>
<p>We freshened up a bit and went sightseeing, exploring Thamel, and ate momos (Still like Uttar Pradesh (North Indian state) ones more ;))
We also bought some really needed and mandatory fridge magnets, because if you can't flex it, did it really happen?</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/day0_thamel.png"/></p>
<h4><strong>Day 1</strong></h4>
<p>Where do I even start lol, it was probably the most jam-packed day.
Waking up in the morning was hard, to say the least, but I conquered it. After freshening up I went for breakfast and had the pleasure of meeting - Rosanna, Kristi, Anisa, Fenris, Jipmang, Matthias and others I met at the previous two conferences.</p>
<p>It was nice catching up again.</p>
<p>We briefly discussed about next GNOME Asia and UbuCon Asia with stuffed mouths, because that is important as well. Fun fact, we won the bid to host UbuCon Asia 2024 in India and are hoping to have a joint event with GNOME Asia as well.</p>
<p>After being the last to finish up (Eating slowly and enjoying fully:P) we proceeded to the venue of the conference.
There I met Aaditya Singh (Local team lead). We conversed a few times online and it was great to meet in person. After looting some swags, we went to the conference rooms.</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/swags.png"/></p>
<p>Holly (New GNOME ED) started the conference and then we proceeded to the Keynote by Justin, It was just awesome!!!! Probably something I'll recommend my peers to watch.
Then we had a talk by Federico and Rosanna, again awesome and then we had the best talk of the conference, mine!!</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/justin_keynote.png"/></p>
<p>After draining myself with the presentation and the brief Q&amp;A (If the talk felt a bit small and fast-paced, time was the issue) I proceeded to resume my role as an attendee and judging others ;)</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/aryan_extensions.jpg"/></p>
<p>After attending many more awesome talks, we got to witness the Fedora release party, and even when we were literally on power saving mode, with a 5% charge, the party acted like a charger (Yeah.... not the best at having metaphors)</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/day1_fedora_party.png"/></p>
<p>Due to the cake delay, we had a nice intro section, it acted like an icebreaker and made everyone know each other well.
After the party I don't know what we did tbh, most probably crashed at the hotel hehe.
Phew that was a lot for one day. Fedora and GNOME you are cool ;)</p>
<h4><strong>Day 2</strong></h4>
<p>We had to miss the Keynote on the second day to visit Pashupatinath temple in the morning when it is quiet and peaceful. It is one of our holiest sites and if you visit Kathmandu and don't go there (for Hindus) then you are missing out on the most peaceful place. Those memories still give me chills.</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/pashupatinath.png"/></p>
<p>But, I did watch the Keynote in Enitrety later on, and I have to say, the only time I watched a video this long it was of Linus Torvalds haha. It was next-level and full of insights. I just wish I could have attended it. I had the pleasure of talking with Hempal sir multiple times, and he was one of the best personalities.</p>
<p>Then had the pleasure to listen to amazing talks including by Federico, Nasah, Khairul, and others. Ps from my experience of GUADEC and GNOME Asia, Anisa's would have been great as well.
I presented a talk on accessibility at GUADEC, but the one by Federico made me learn so much, which also makes the point that we need better documentation in this area, as it was painful to find those.</p>
<p>We then visited Thamel again, because why not, bought some Pashmina shawls from the hotel, and called it a day!</p>
<h4><strong>Day 3</strong></h4>
<p>Day 3 was a social visit, which means the day when you become poor after buying too much stuff, tired after walking too much, and amazed after exploring the beauty of a place like Nepal.</p>
<p>The best part was explaining about our god Shiva and about Shivling to curious Rosanna and Fenris. It was a moment where we shared our cultures and did knowledge exchange.
Have to say, I became this spiritual after quite a long time, but it was a nice change.</p>
<p>We also ate Newari traditional lunch, where I also tried Tongba, a native alcoholic drink made from fermented millet, boiled milk and herbs, it was the second time I touched Alcohol in my life, and only after getting assurance that the Alcoholic content was too little :)</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/day3_trip.png"/></p>
<p>It was some really nice food, and the Tongba was also surprisingly good. There me and Asmit also did some mischief with fire, which was well... childish and fun :)</p>
<p>Don't know what happened to me there, but it was probably the most I have ever networked, maybe because after two conferences I became more comfortable and familiar with the community at large.</p>
<p><img alt="" src="https://www.aryank.in/images/uploads/day3_collage.png"/></p>
<p>Day 3 was more of an experience so I don't think there is much more to be said for that.</p>
<h4><strong>Day 4</strong></h4>
<p><img alt="" src="https://www.aryank.in/images/uploads/boudhnath.png"/></p>
<p>Visited Monastries and Boudhnath Stupa, and then departed back home.</p>
<h4><strong>End</strong></h4>
<p><img alt="" src="https://www.aryank.in/images/uploads/gas23_group.jpg"/></p>
<p>To end with I want to thank GNOME Foundation for sponsoring my visit and giving me the opportunity to witness the awesome talks in person and bond with the community.</p>
<p>Btw, looking forward to meeting many of them again at UbuCon Asia 2024 India and also hopefully GNOME Asia 2024 :D</p>
<p><img alt="Sponsored by gnome badge" src="https://www.aryank.in/images/uploads/sponsored-by-foundation.png"/></p></div>
    </content>
    <updated>2024-02-04T01:27:00Z</updated>
    <published>2024-02-04T01:27:00Z</published>
    <source>
      <id>https://www.aryank.in/</id>
      <author>
        <name>Aryan Kaushik</name>
        <email>aryan@aryank.in</email>
      </author>
      <link href="https://www.aryank.in/feed.xml" rel="self" type="application/atom+xml"/>
      <link href="https://www.aryank.in/" rel="alternate" type="text/html"/>
      <subtitle>Some casual blogs and some related to my GSoC journey</subtitle>
      <title>Blogs by Aryan</title>
      <updated>2024-02-04T01:27:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blog.gtk.org/?p=9925</id>
    <link href="https://blog.gtk.org/2024/02/03/gtk-hackfest-updates/" rel="alternate" type="text/html"/>
    <title>GTK hackfest updates</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">As we often do, a few members of the GTK team and the wider GNOME community came together for a two-day hackfest before FOSDEM. This year, we were aiming to make progress on the topics of accessibility and input. Here is a quick summary of what we’ve achieved. Accessibility We agreed to merge the socket … <a class="more-link" href="https://blog.gtk.org/2024/02/03/gtk-hackfest-updates/">Continue reading<span class="screen-reader-text"> "GTK hackfest updates"</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>As we often do, a few members of the GTK team and the wider GNOME community came together for a two-day hackfest before FOSDEM.</p>
<p><a href="https://blog.gtk.org/files/2024/02/photo_2024-02-03_16-00-24.jpg"><img alt="" class="aligncenter wp-image-9934" height="225" src="https://blog.gtk.org/files/2024/02/photo_2024-02-03_16-00-24-300x135.jpg" width="500"/></a></p>
<p>This year, we were aiming to make progress on the topics of accessibility and input. Here is a quick summary of what we’ve achieved.</p>
<h3>Accessibility</h3>
<ul>
<li>We agreed to merge the socket <a href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6827">implementation</a> for webkit accessiblity that Georges wrote</li>
<li>We agreed that the accessible notification <a href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6461">api</a> that Lukáš suggested is fine</li>
<li>We finished the <a href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6666">GtkAccessibleText</a> interface and moved our internal implementations over to that interface</li>
<li>We discussed the <a href="https://gitlab.gnome.org/GNOME/gtk/-/issues/6394">possibility</a> of an a11y backend based on AccessKit</li>
</ul>
<h3>Input</h3>
<ul>
<li>Carlos reviewed the merge request for passing unhandled events back to the system (on macOS)</li>
<li>We looked over the remnants of X11-style timestamps in our input apis and decided to provide alternatives taking an event</li>
</ul>
<h3>Wayland</h3>
<ul>
<li>Carlos started to turn the private gtk-shell protocol into separate protocols</li>
</ul>
<p>Thanks to the GNOME foundation for supporting this event. <img alt="&#x2764;" class="wp-smiley" src="https://s.w.org/images/core/emoji/14.0.0/72x72/2764.png" style="height: 1em;"/></p></div>
    </content>
    <updated>2024-02-03T15:02:12Z</updated>
    <published>2024-02-03T15:02:12Z</published>
    <author>
      <name>mclasen</name>
    </author>
    <source>
      <id>https://blog.gtk.org</id>
      <link href="https://blog.gtk.org/author/mclasen/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blog.gtk.org" rel="alternate" type="text/html"/>
      <subtitle>All things GTK</subtitle>
      <title>mclasen – GTK Development Blog</title>
      <updated>2024-02-03T15:02:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:danigm.net,2024-02-03:/wheres-my-python-code.html</id>
    <link href="https://danigm.net/wheres-my-python-code.html" rel="alternate" type="text/html"/>
    <title>Where's my python code?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><img src="http://danigm.net/pictures/python-logo-master-v3-TM.png" width="100%"/></p>
<p>Python is a interpreted language, so the python code are just text
files with the <code>.py</code> extension. For simple scripts it's really easy to
have your files located, but when you starts to use dependencies and
different projects with different requirements the thing starts to get
more complex.</p>
<h2>PYTHONPATH</h2>
<p>The Python interpreter uses a list of paths to try to locate python
modules, for example this is what you can get in a modern GNU/Linux
distribution by default:</p>
<div class="codehilite"><pre><span/><code><span class="n">Python</span> <span class="mf">3.11.7</span> <span class="p">(</span><span class="n">main</span><span class="p">,</span> <span class="n">Dec</span> <span class="mi">15</span> <span class="mi">2023</span><span class="p">,</span> <span class="mi">10</span><span class="p">:</span><span class="mi">49</span><span class="p">:</span><span class="mi">17</span><span class="p">)</span> <span class="p">[</span><span class="n">GCC</span><span class="p">]</span> <span class="n">on</span> <span class="n">linux</span>
<span class="n">Type</span> <span class="s2">"help"</span><span class="p">,</span> <span class="s2">"copyright"</span><span class="p">,</span> <span class="s2">"credits"</span> <span class="ow">or</span> <span class="s2">"license"</span> <span class="k">for</span> <span class="n">more</span> <span class="n">information</span><span class="o">.</span>
<span class="o">&gt;&gt;&gt;</span> <span class="kn">import</span> <span class="nn">sys</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span>
<span class="p">[</span><span class="s1">''</span><span class="p">,</span>
 <span class="s1">'/usr/lib64/python311.zip'</span><span class="p">,</span>
 <span class="s1">'/usr/lib64/python3.11'</span><span class="p">,</span>
 <span class="s1">'/usr/lib64/python3.11/lib-dynload'</span><span class="p">,</span>
 <span class="s1">'/usr/lib64/python3.11/site-packages'</span><span class="p">,</span>
 <span class="s1">'/usr/lib64/python3.11/_import_failed'</span><span class="p">,</span>
 <span class="s1">'/usr/lib/python3.11/site-packages'</span><span class="p">]</span>
</code></pre></div>

<p>These are the default paths where the python modules are installed. If
you install any python module using your linux packaging tool, the
python code will be placed inside the <code>site-packages</code> folder.</p>
<p>So system installed python modules can be located in:</p>
<ul>
<li><code>/usr/lib/python3.11/site-packages</code> for modules that are
   architecture independent (pure python, all <code>.py</code> files)</li>
<li><code>/usr/lib64/python3.11/site-packages</code> for modules that depends on
   the arquitecture, that's something that uses low level libraries
   and needs to build so there are some <code>.so</code> files.</li>
</ul>
<h2>pip</h2>
<p>When you need a new python dependency you can try to install from your
GNU/Linux distribution using the default package manager like
<code>zypper</code>, <code>dnf</code> or <code>apt</code>, and those python files will be placed in the
system paths that you can see above.</p>
<p>But distributions doesn't pack all the python modules and even if they
do, you can require an specific version that's different from the one
packaged in your favourite distribution, so in python it's common to
install dependencies from the <a href="https://pypi.org/">Python Package Index (PyPI)</a>.</p>
<p>Python has a tool to install and manage Python packages that looks for
desired python modules in PyPI.</p>
<p>You can install new dependencies with <code>pip</code> just like:</p>
<div class="codehilite"><pre><span/><code>$<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>django
</code></pre></div>

<p>And that command looks for the <code>django</code> python module in the PyPI,
downloads and install it, in your user
<code>$HOME/.local/lib/python3.11/site-packages</code> folder if you
use <code>--user</code>, or in a global system path like <code>/usr/local/lib</code> or
<code>/usr/lib</code> if you run pip as root.</p>
<p>But the usage of <code>pip</code> directly in the system is something <strong>not
recommended today</strong>, and even <a href="https://packaging.python.org/en/latest/specifications/externally-managed-environments/#externally-managed-environments">it's disabled</a> in some
distributions, like openSUSE Tumbleweed.</p>
<div class="codehilite"><pre><span/><code><span class="p">[</span><span class="nx">danigm</span><span class="err">@</span><span class="nx">localhost</span><span class="w"> </span><span class="o">~</span><span class="p">]</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="nx">pip</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">django</span>
<span class="nx">error</span><span class="p">:</span><span class="w"> </span><span class="nx">externally</span><span class="o">-</span><span class="nx">managed</span><span class="o">-</span><span class="nx">environment</span>

<span class="err">×</span><span class="w"> </span><span class="nx">This</span><span class="w"> </span><span class="nx">environment</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">externally</span><span class="w"> </span><span class="nx">managed</span>
<span class="err">╰─</span><span class="p">&gt;</span><span class="w"> </span><span class="nx">To</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">Python</span><span class="w"> </span><span class="nx">packages</span><span class="w"> </span><span class="nx">system</span><span class="o">-</span><span class="nx">wide</span><span class="p">,</span><span class="w"> </span><span class="nx">try</span>
<span class="w">    </span><span class="nx">zypper</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">python311</span><span class="o">-</span><span class="nx">xyz</span><span class="p">,</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="nx">xyz</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="kn">package</span>
<span class="w">    </span><span class="nx">you</span><span class="w"> </span><span class="nx">are</span><span class="w"> </span><span class="nx">trying</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">install</span><span class="p">.</span>

<span class="w">    </span><span class="nx">If</span><span class="w"> </span><span class="nx">you</span><span class="w"> </span><span class="nx">wish</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="nx">non</span><span class="o">-</span><span class="nx">rpm</span><span class="w"> </span><span class="nx">packaged</span><span class="w"> </span><span class="nx">Python</span><span class="w"> </span><span class="kn">package</span><span class="p">,</span>
<span class="w">    </span><span class="nx">create</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="kd">virtual</span><span class="w"> </span><span class="nx">environment</span><span class="w"> </span><span class="nx">using</span><span class="w"> </span><span class="nx">python3</span><span class="m m-Double">.1</span><span class="mi">1</span><span class="w"> </span><span class="o">-</span><span class="nx">m</span><span class="w"> </span><span class="nx">venv</span><span class="w"> </span><span class="nx">path</span><span class="o">/</span><span class="nx">to</span><span class="o">/</span><span class="nx">venv</span><span class="p">.</span>
<span class="w">    </span><span class="nx">Then</span><span class="w"> </span><span class="nx">use</span><span class="w"> </span><span class="nx">path</span><span class="o">/</span><span class="nx">to</span><span class="o">/</span><span class="nx">venv</span><span class="o">/</span><span class="nx">bin</span><span class="o">/</span><span class="nx">python</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="nx">path</span><span class="o">/</span><span class="nx">to</span><span class="o">/</span><span class="nx">venv</span><span class="o">/</span><span class="nx">bin</span><span class="o">/</span><span class="nx">pip</span><span class="p">.</span>

<span class="w">    </span><span class="nx">If</span><span class="w"> </span><span class="nx">you</span><span class="w"> </span><span class="nx">wish</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="nx">non</span><span class="o">-</span><span class="nx">rpm</span><span class="w"> </span><span class="nx">packaged</span><span class="w"> </span><span class="nx">Python</span><span class="w"> </span><span class="nx">application</span><span class="p">,</span>
<span class="w">    </span><span class="nx">it</span><span class="w"> </span><span class="nx">may</span><span class="w"> </span><span class="nx">be</span><span class="w"> </span><span class="nx">easiest</span><span class="w"> </span><span class="nx">to</span><span class="w"> </span><span class="nx">use</span><span class="w"> </span><span class="err">`</span><span class="nx">pipx</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">xyz</span><span class="err">`</span><span class="p">,</span><span class="w"> </span><span class="nx">which</span><span class="w"> </span><span class="nx">will</span><span class="w"> </span><span class="nx">manage</span><span class="w"> </span><span class="nx">a</span>
<span class="w">    </span><span class="kd">virtual</span><span class="w"> </span><span class="nx">environment</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">you</span><span class="p">.</span><span class="w"> </span><span class="nx">Install</span><span class="w"> </span><span class="nx">pipx</span><span class="w"> </span><span class="nx">via</span><span class="w"> </span><span class="err">`</span><span class="nx">zypper</span><span class="w"> </span><span class="nx">install</span><span class="w"> </span><span class="nx">python311</span><span class="o">-</span><span class="nx">pipx</span><span class="err">`</span><span class="w"> </span><span class="p">.</span>

<span class="nx">note</span><span class="p">:</span><span class="w"> </span><span class="nx">If</span><span class="w"> </span><span class="nx">you</span><span class="w"> </span><span class="nx">believe</span><span class="w"> </span><span class="nx">this</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="nx">mistake</span><span class="p">,</span><span class="w"> </span><span class="nx">please</span><span class="w"> </span><span class="nx">contact</span><span class="w"> </span><span class="nx">your</span><span class="w"> </span><span class="nx">Python</span><span class="w"> </span><span class="nx">installation</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="nx">OS</span><span class="w"> </span><span class="nx">distribution</span><span class="w"> </span><span class="nx">provider</span><span class="p">.</span><span class="w"> </span><span class="nx">You</span><span class="w"> </span><span class="nx">can</span><span class="w"> </span><span class="k">override</span><span class="w"> </span><span class="nx">this</span><span class="p">,</span><span class="w"> </span><span class="nx">at</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">risk</span><span class="w"> </span><span class="nx">of</span><span class="w"> </span><span class="nx">breaking</span><span class="w"> </span><span class="nx">your</span><span class="w"> </span><span class="nx">Python</span><span class="w"> </span><span class="nx">installation</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="nx">OS</span><span class="p">,</span><span class="w"> </span><span class="nx">by</span><span class="w"> </span><span class="nx">passing</span><span class="w"> </span><span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="nx">system</span><span class="o">-</span><span class="nx">packages</span><span class="p">.</span>
<span class="nx">hint</span><span class="p">:</span><span class="w"> </span><span class="nx">See</span><span class="w"> </span><span class="nx">PEP</span><span class="w"> </span><span class="mi">668</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">the</span><span class="w"> </span><span class="nx">detailed</span><span class="w"> </span><span class="nx">specification</span><span class="p">.</span>
</code></pre></div>

<h2>virtualenvs</h2>
<p>Following the current recommendation, the correct way of installing
third party python modules is to use <code>virtualenvs</code>.</p>
<p>The <code>virtualenvs</code> are just specific folders where you install your
python modules and some scripts that make's easy to use it in
combination with your system libraries so you don't need to modify the
<code>PYTHONPATH</code> manually.</p>
<p>So if you've a custom project and want to install python modules you
can create your own virtualenv and use pip to install dependencies
there:</p>
<div class="codehilite"><pre><span/><code><span class="o">[</span><span class="n">danigm@localhost tmp</span><span class="o">]</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">python3</span><span class="w"> </span><span class="o">-</span><span class="n">m</span><span class="w"> </span><span class="n">venv</span><span class="w"> </span><span class="n">myenv</span>
<span class="o">[</span><span class="n">danigm@localhost tmp</span><span class="o">]</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="p">.</span><span class="w"> </span><span class="p">.</span><span class="o">/</span><span class="n">myenv</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">activate</span>
<span class="p">(</span><span class="n">myenv</span><span class="p">)</span><span class="w"> </span><span class="o">[</span><span class="n">danigm@localhost tmp</span><span class="o">]</span><span class="w"> </span><span class="err">$</span><span class="w"> </span><span class="n">pip</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">django</span>
<span class="n">Collecting</span><span class="w"> </span><span class="n">django</span>
<span class="p">...</span>
<span class="n">Successfully</span><span class="w"> </span><span class="n">installed</span><span class="w"> </span><span class="n">asgiref</span><span class="o">-</span><span class="mf">3.7.2</span><span class="w"> </span><span class="n">django</span><span class="o">-</span><span class="mf">5.0.1</span><span class="w"> </span><span class="n">sqlparse</span><span class="o">-</span><span class="mf">0.4.4</span>
</code></pre></div>

<p>So all dependencies are installed in my new virtualenv folder and if I
use the python from the virtualenv it's using those paths, so all the
modules installed there are usable inside that virtualenv:</p>
<div class="codehilite"><pre><span/><code><span class="p">(</span><span class="n">myenv</span><span class="p">)</span> <span class="p">[</span><span class="n">danigm</span><span class="nd">@localhost</span> <span class="n">tmp</span><span class="p">]</span> <span class="err">$</span> <span class="n">ls</span> <span class="n">myenv</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">python3</span><span class="mf">.11</span><span class="o">/</span><span class="n">site</span><span class="o">-</span><span class="n">packages</span><span class="o">/</span><span class="n">django</span><span class="o">/</span>
<span class="n">apps</span>  <span class="n">contrib</span>  <span class="n">db</span>        <span class="n">forms</span>  <span class="fm">__init__</span><span class="o">.</span><span class="n">py</span>  <span class="n">middleware</span>   <span class="n">shortcuts</span><span class="o">.</span><span class="n">py</span>  <span class="n">templatetags</span>  <span class="n">urls</span>   <span class="n">views</span>
<span class="n">conf</span>  <span class="n">core</span>     <span class="n">dispatch</span>  <span class="n">http</span>   <span class="n">__main__</span><span class="o">.</span><span class="n">py</span>  <span class="n">__pycache__</span>  <span class="n">template</span>      <span class="n">test</span>          <span class="n">utils</span>
<span class="p">(</span><span class="n">myenv</span><span class="p">)</span> <span class="p">[</span><span class="n">danigm</span><span class="nd">@localhost</span> <span class="n">tmp</span><span class="p">]</span> <span class="err">$</span> <span class="n">python3</span> <span class="o">-</span><span class="n">c</span> <span class="s2">"import django; print(django.__version__)"</span>
<span class="mf">5.0.1</span>
<span class="p">(</span><span class="n">myenv</span><span class="p">)</span> <span class="p">[</span><span class="n">danigm</span><span class="nd">@localhost</span> <span class="n">tmp</span><span class="p">]</span> <span class="err">$</span> <span class="n">deactivate</span>
</code></pre></div>

<p>With virtualenvs you can have multiple python projects, with different
dependencies, isolated, so you use different dependencies when you
activate your desired virtualenv:</p>
<ul>
<li>activate <code>$ . ./myenv/bin/activate</code></li>
<li>deactivate <code>$ deactivate</code></li>
</ul>
<h2>High level tools to handle virtualenvs</h2>
<p>The <a href="https://docs.python.org/3/library/venv.html#module-venv">venv</a> module is a default Python module and as you can see
above, it's really simple to use, but there are some tools that
provides some tooling around it, to make it easy for you, so usually
you don't need to use <code>venv</code> directly.</p>
<h3>pipx</h3>
<p>For final python tools, that you are not going to use as dependencies
in your python code, the recommended tool to use is <a href="https://github.com/pypa/pipx">pipx</a>.</p>
<p><img src="http://danigm.net/pictures/pipx_demo.gif" width="100%"/></p>
<p>The tool creates virtualenv automatically and links the binaries so
you don't need to worry about anything, just use as a way to install
third party python applications and update/uninstall using it. The
<code>pipx</code> won't mess your system libraries and each installation will use
a different virtualenv, so even tools with incompatible dependencies
will work nicely together in the same system.</p>
<h3>Libraries, for Python developers</h3>
<p>In the case of Python developers, when you need to manage dependencies
for your project, there are a lot of nice high level tools for
<a href="https://packaging.python.org/en/latest/tutorials/managing-dependencies/#other-tools-for-application-dependency-management">managing dependencies</a>.</p>
<ul>
<li><a href="https://github.com/pdm-project/pdm">PDM</a></li>
<li><a href="https://github.com/pypa/hatch">hatch</a></li>
<li><a href="https://github.com/thoth-station/micropipenv">micropipenv</a></li>
<li><a href="https://github.com/jazzband/pip-tools">pip-tools</a></li>
<li><a href="https://packaging.python.org/en/latest/key_projects/#pipenv">pipenv</a></li>
<li><a href="https://github.com/python-poetry/poetry">poetry</a></li>
</ul>
<p>These tools provides different ways of managing dependencies, but all
of them relies in the use of <code>venv</code>, creating the virtualenv in
different locations and providing tools to enable/disable and manage
dependencies inside those virtualenvs.</p>
<p>For example, <code>poetry</code> creates virtualenvs by default inside the
<code>.cache</code> folder, in my case I can find all poetry created virtualenvs
in:</p>
<div class="codehilite"><pre><span/><code>/home/danigm/.cache/pypoetry/virtualenvs/
</code></pre></div>

<p>Most of these tools add other utilities on top of the dependency
management. Just for installing python modules easily you can always
use default <code>venv</code> and <code>pip</code> modules, but for more complex projects
it's worth to investigate high level tools, because it'll make easy to
manage your project dependencies and virtualenvs.</p>
<h2>Conclusion</h2>
<p>There are a lot of python code inside any modern Linux distribution
and if you're a python developer it's possible to have a lot of python
code. Make sure to know the source of your modules and do not mix
different environments to avoid future headaches.</p>
<p>As a final trick, if you don't know where's the actual code of some
python module in your running python script, you can always ask:</p>
<div class="codehilite"><pre><span/><code><span class="o">&gt;&gt;&gt;</span> <span class="kn">import</span> <span class="nn">django</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">django</span><span class="o">.</span><span class="vm">__file__</span>
<span class="s1">'/tmp/myenv/lib64/python3.11/site-packages/django/__init__.py'</span>
</code></pre></div>

<p>This could be even more complicated if you start to use containers
and different python versions, so keep you dependencies clean and up
to date and make sue that you know <strong>where is your Python code</strong>.</p></div>
    </summary>
    <updated>2024-02-02T23:00:00Z</updated>
    <published>2024-02-02T23:00:00Z</published>
    <category term="blog"/>
    <category term="gnome"/>
    <category term="work"/>
    <category term="suse"/>
    <category term="linux"/>
    <category term="python"/>
    <author>
      <name>danigm</name>
    </author>
    <source>
      <id>https://danigm.net/</id>
      <link href="https://danigm.net/" rel="alternate" type="text/html"/>
      <link href="http://danigm.net/feeds/tags/gnome.rss.xml" rel="self" type="application/rss+xml"/>
      <title>danigm.net - gnome</title>
      <updated>2024-02-02T23:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://josecodes.hashnode.dev/lets-talk-about-mingle</id>
    <link href="https://josecodes.hashnode.dev/lets-talk-about-mingle" rel="alternate" type="text/html"/>
    <title>Let's talk about Mingle</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I have spent the past few weeks working on a small personal project, because I do not know when to stop. I think Mingle is mostly feature complete at this point. It lets you play with Google's Emoji Kitchen, which is available on Android's GBoard, on GNOME. It provides a convenient way to find the perfect expression and paste it into any conversation online. It is a GTK4/Libadwaita application written in Vala/Blueprint. I have such a weird fascination with Vala. I have a Java/C# background so the syntax is quite familiar. Blueprint is the future and way more readable then XML. The application is still using a placeholder icon because I am not an artist and my own endeavors into Inkscape have not been too successful. Life has kinda been kicking my butt recently, so working on this app has been a small reprieve from how uncaring and mean existence can be.</p><p><img alt="One of my favorite combos" class="image--center mx-auto" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1706746455444/c167040e-4a6b-40d3-a254-48d05164a80e.png"/></p><p>Personal Favorite</p><hr/><h2 id="heading-lazy-loading">Lazy Loading</h2><p>I started this project under the assumption I would get it running under GNOME Shell Mobile one day. So, I had to implement lazy loading, something I have never done before, if I ever wanted to see this run on a mobile device; Until somewhat recently, when you selected an emoji it would just grab every relevant combination. This was not smart or efficient. Mingle would very quickly use up more memory than my web browser. Google's artists made a lot of emoji art, and loading that many combined emojis and populating a flow box asynchronously at the same time tanked performance. This made my XPS 13, with only 8 gigabytes of memory, scream in agony.</p><p>Currently, Mingle is loading combined emojis in batches and fetches more on an <code>edge-overshot</code> signal, so it loads more as your scroll. This works both with a scroll-wheel and touch-input (Thanks XPS). I am not sure if this is the best approach, but it prevents the app from being a stuttering mess. When you select a left and a right emoji we prepend that combination to our center flow box.</p><hr/><h2 id="heading-style-switcher">Style Switcher</h2><p><img alt="style switcher" class="image--center mx-auto" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1706746827384/6cfc0ac0-84c8-4a67-864a-f693974d4ff9.png"/></p><p>A fairly common pattern I have seen in both GNOME and Elementary apps are these slick color/style selectors. I wanted to implement this pattern, because why not? It looks good and I get to learn how things work. These custom widgets are really just radio buttons that are heavily stylized with CSS. We then just have to add it as a custom child to our primary menu. <a href="https://github.com/sonnyp/troll/blob/main/src/widgets/" target="_blank">Here</a> is great example using JavaScript and Blueprint. <a href="https://gitlab.gnome.org/raggesilver/blackbox/-/blob/main/src/widgets/StyleSwitcher.vala?ref_type=heads" target="_blank">Blackbox</a>, my terminal of choice, also has a selector written in Vala and XML. These two projects and the beauty of open source software allowed me to create a solution I am happy with. If anybody is reading this and is interested you can check out <a href="https://github.com/halfmexican/mingle" target="_blank">the repo</a>. I intend to polish things a bit more and then do a first release on Flathub.</p></div>
    </summary>
    <updated>2024-02-02T22:54:09Z</updated>
    <published>2024-02-02T22:54:09Z</published>
    <author>
      <name>José</name>
    </author>
    <source>
      <id>https://josecodes.hashnode.dev</id>
      <link href="https://josecodes.hashnode.dev" rel="alternate" type="text/html"/>
      <link href="https://josecodes.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/>
      <link href="https://josecodes.hashnode.dev/rss.xml?page=1" rel="next" type="text/html"/>
      <subtitle>José's blog</subtitle>
      <title>José's blog</title>
      <updated>2024-02-09T08:03:32Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/alatiera/?p=5074</id>
    <link href="https://blogs.gnome.org/alatiera/2024/02/02/thessaloniki-spring-hackfests/" rel="alternate" type="text/html"/>
    <title>Thessaloniki spring Hackfests!</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Hello everyone! I am here to terrorize your calendar by dropping the dates for two back to back hackfests we are organizing in the beautiful city of Thessaloniki, Greece (who doesn’t like coming to Greece on work time, right?). May 27-29th we will be hosting the annual GStreamer Spring Hackfest. If multimedia is your thing, … <a class="more-link" href="https://blogs.gnome.org/alatiera/2024/02/02/thessaloniki-spring-hackfests/">Continue reading <span class="screen-reader-text">Thessaloniki spring Hackfests!</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hello everyone!</p>
<p>I am here to terrorize your calendar by dropping the dates for two back to back <a href="https://handbook.gnome.org/events/hackfests.html">hackfests</a> we are organizing in the beautiful city of Thessaloniki, Greece (who doesn’t like coming to Greece on work time, right?).</p>
<p>May 27-29th we will be hosting the annual <a href="https://hedgedoc.gnome.org/gstreamer-hackfest-spring-2024">GStreamer Spring Hackfest</a>. If multimedia is your thing, you know the drill. Newcomers are also welcome ofc!</p>
<p>May 31st-June 5th we will be hosting another edition of the <a href="https://hedgedoc.gnome.org/hackfest-gnome-rust-2024">GNOME <img alt="&#x2665;" class="wp-smiley" src="https://s.w.org/images/core/emoji/14.0.0/72x72/2665.png" style="height: 1em;"/> Rust Hackfest</a>. First in person Rust hackfest ever since the pandemic started. From what I heard, half of Berlin will be coming for this one so we might change its scope to an all around GNOME one, but we will see. You are all welcome!</p>
<p>See the pages of each hackfest for more details.</p>
<p><a href="https://handbook.gnome.org/events/hackfests.html"><img alt="" class="aligncenter size-full wp-image-5098" height="514" src="https://blogs.gnome.org/alatiera/files/2024/02/Screenshot-2024-02-02-at-21-01-49-Hackfests.png" width="822"/></a></p>
<p>We are in the final steps of booking the venue but it will most likely be in the city center and it should be safe to book accommodation and traveling tickets.</p>
<p>Additionally the venue we are looking at can accommodate around 40 people, so please please add yourself to the organizing pad of each hackfest you are interested in, in addition to any dietary restrictions you might have.</p>
<p>See you all IRL!</p></div>
    </content>
    <updated>2024-02-02T19:03:22Z</updated>
    <published>2024-02-02T19:03:22Z</published>
    <author>
      <name>Jordan Petridis</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/alatiera</id>
      <link href="https://blogs.gnome.org/alatiera/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/alatiera" rel="alternate" type="text/html"/>
      <subtitle>Just another GNOME Blogs site</subtitle>
      <title>Rust in Peace</title>
      <updated>2024-02-03T00:17:42Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/chergert/?p=11416</id>
    <link href="https://blogs.gnome.org/chergert/2024/02/02/performance-profiling-for-fedora-magazine/" rel="alternate" type="text/html"/>
    <title>Performance Profiling for Fedora Magazine</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I’ve authored an article recently for Fedora Magazine on Performance Profiling in Fedora. It covers both the basics on how to get started as well as the nitty-gritty details of how profilers work. I’d love for others to be more informed on that so I’m not the only person maintaining Sysprof. Hopefully I was able … <a class="more-link" href="https://blogs.gnome.org/chergert/2024/02/02/performance-profiling-for-fedora-magazine/">Continue reading <span class="screen-reader-text">Performance Profiling for Fedora Magazine</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’ve authored an article recently for <a href="https://fedoramagazine.org/">Fedora Magazine</a> on <a href="https://fedoramagazine.org/performance-profiling-in-fedora-linux/">Performance Profiling in Fedora</a>.</p>
<p>It covers both the basics on how to get started as well as the nitty-gritty details of how profilers work. I’d love for others to be more informed on that so I’m not the only person maintaining Sysprof.</p>
<p>Hopefully I was able to distill the information down a bit better than my typical blog posts. If you felt like those were maybe too difficult to follow, give this one a read.</p></div>
    </content>
    <updated>2024-02-02T18:58:17Z</updated>
    <published>2024-02-02T18:58:17Z</published>
    <category term="Sysprof"/>
    <author>
      <name>chergert</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/chergert</id>
      <link href="https://blogs.gnome.org/chergert/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/chergert" rel="alternate" type="text/html"/>
      <subtitle>Details of Christian's work on GNOME</subtitle>
      <title>Happenings in GNOME</title>
      <updated>2024-02-02T18:58:17Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://thisweek.gnome.org/posts/2024/02/twig-133/</id>
    <link href="https://thisweek.gnome.org/posts/2024/02/twig-133/" rel="alternate" type="text/html"/>
    <title>#133 FOSDEM 2024</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Update on what happened across the GNOME project in the week from January 26 to February 02.</p>
<h1 id="events">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#events"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Events
</h1><p><a href="https://matrix.to/#/@cassidyjames:gnome.org">Cassidy James Blaede</a> reports</p>
<blockquote>
<p>Going to FOSDEM this weekend? Meet up with GNOME and Flathub folks!</p>
<ul>
<li><a href="https://foundation.gnome.org/2024/01/29/gnome-at-fosdem-2024/">GNOME booth and GNOME Beers</a></li>
<li><a href="https://docs.flathub.org/blog/fosdem-2024">Flathub BoF and more</a></li>
</ul>
<p>If you’re unable to make the Flathub BoF but still want to chat, you can catch the team around the GNOME and KDE stands.</p>
<p>See you there!</p>
</blockquote>
<p><a href="https://matrix.to/#/@alatiera:matrix.org">alatiera</a> reports</p>
<blockquote>
<p>We are organizing a <a href="https://hedgedoc.gnome.org/gstreamer-hackfest-spring-2024">GStreamer hackfest</a> in Thessaloniki, Greece on May 27th-29th. In addition the #9 installment of the <a href="https://hedgedoc.gnome.org/hackfest-gnome-rust-2024">GNOME ♥️ Rust Hackfest</a> series will take place in the days after 31st of May - 5th of July. For more details see the <a href="https://blogs.gnome.org/alatiera/2024/02/02/thessaloniki-spring-hackfests/">blogpost</a> and the handbook <a href="https://handbook.gnome.org/events/hackfests.html">hackfests page</a>.

<img alt="" src="https://thisweek.gnome.org/posts/2024/02/twig-133/aYwHEmlGOrGmVgelAgRGQdXa.png"/>
</p>
</blockquote>


<h1 id="gnome-core-apps-and-libraries">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gnome-core-apps-and-libraries"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GNOME Core Apps and Libraries
</h1>

<h3 id="gtk">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gtk"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GTK <a href="https://gitlab.gnome.org/GNOME/gtk"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Cross-platform widget toolkit for creating graphical user interfaces.</p>
<p><a href="https://matrix.to/#/@ebassi:gnome.org">Emmanuele Bassi</a> says</p>
<blockquote>
<p>The GTK developers are having a hackfest in Brussels right before the FOSDEM weekend. Lots of work on rendering, media, input, and accessibility. Look forward to a full report on the GTK development blog.</p>
</blockquote>


<h1 id="gnome-websites">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gnome-websites"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GNOME Websites
</h1><p><a href="https://matrix.to/#/@aday:gnome.org">Allan Day</a> announces</p>
<blockquote>
<p>The <a href="https://handbook.gnome.org/">GNOME Project Handbook</a> was <a href="https://blogs.gnome.org/aday/2024/01/30/announcing-the-gnome-project-handbook/">officially announced</a>! This new resource provides all the information people need to participate in the GNOME project, including how the project works, how to get accounts and use project infrastructure, the release cycle, issue management, and much more. Everyone is invited to help keep the handbook up to date and accurate.
The handbook is part of an ongoing to effort to the retire the GNOME wiki. More announcements about this will be coming soon.</p>
</blockquote>


<h1 id="gnome-circle-apps-and-libraries">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gnome-circle-apps-and-libraries"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GNOME Circle Apps and Libraries
</h1>

<h3 id="paper-clip">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#paper-clip"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Paper Clip <a href="https://apps.gnome.org/PdfMetadataEditor/"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Edit PDF document metadata.</p>
<p><a href="https://matrix.to/#/@dimmednerd:matrix.org">Diego Iván M.E</a> says</p>
<blockquote>
<p>This week, Paper Clip v5.0 was released! This release brings a couple of quality-of-life improvements, enhancements and a shiny new feature:</p>
<ul>
<li>Paper Clip now supports editing encrypted documents, thanks to a brand new dialog that allows users to open files protected by a password.</li>
<li>The DublinCore XMP metadata format is now synchronized with their PDF equivalents.</li>
<li>Updated translations, including French, Basque, Russian, Italian, Occitan and Spanish. Thanks to rene-coty, Sergio Varela, Ser82-png, albanobattistella and Mejans for their contributions!</li>
<li>Appdata improvements by Sabri Ünal</li>
</ul>
<p>Get the latest release from <a href="https://flathub.org/apps/io.github.diegoivan.pdf_metadata_editor">Flathub</a>!

<img alt="" src="https://thisweek.gnome.org/posts/2024/02/twig-133/AUdumycYybeItVtxaiuHkzrX.png"/>
</p>
</blockquote>


<h1 id="third-party-projects">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#third-party-projects"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Third Party Projects
</h1><p><a href="https://matrix.to/#/@shuriken:fedora.im">SHuRiKeN</a> says</p>
<blockquote>
<p>Eeman app is now <a href="https://flathub.org/apps/sh.shuriken.Eeman">available on Flathub</a>, made using GTK 4 and Libadwaita, this app lets you track and get notified of your Salah (prayer) timings, and lets you read the beautiful Quran.</p>
</blockquote>
<p><a href="https://matrix.to/#/@ghani1990:matrix.org">ghani1990</a> says</p>
<blockquote>
<p>A new version of <a href="https://flathub.org/apps/io.github.diegopvlk.Dosage">Dosage</a> app to Keep track of your treatments was released  this week</p>
<p>this version (1.5.1) has many improvements, the most important of which are:</p>
<p>• It’s now possible to edit history entries
• New preference to auto-clear history
• New row style for select frequency
• New row style for select date
• New badge style for history confirmed item

<img alt="" src="https://thisweek.gnome.org/posts/2024/02/twig-133/NCfVrFusZzNjpetgPsfGQHrE.png"/>
</p>
</blockquote>


<h3 id="denaro">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#denaro"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Denaro <a href="https://flathub.org/apps/details/org.nickvision.money"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Manage your personal finances.</p>
<p><a href="https://matrix.to/#/@nlogozzo:matrix.org">Nick</a> announces</p>
<blockquote>
<p>Denaro <a href="https://github.com/NickvisionApps/Denaro/releases/tag/2024.2.0">V2024.2.0</a> was released this week.
This release contains some bug fixes to make your experience more stable!</p>
<p>Here’s the changelog:</p>
<ul>
<li>Improved importing of QIF files</li>
<li>Fixed a bug where the app would crash when filtering transactions for certain dates (mainly leap years like this year 😅)</li>
<li>Updated and added translations (Thanks to everyone on Weblate)!

<img alt="" src="https://thisweek.gnome.org/posts/2024/02/twig-133/vdTQqIANlnvMWkYKcFPxmgls.png"/>
</li>
</ul>
</blockquote>


<h1 id="miscellaneous">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#miscellaneous"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Miscellaneous
</h1><p><a href="https://matrix.to/#/@sophieherold:gnome.org">Sophie (she/her)</a> says</p>
<blockquote>
<p>The <a href="https://release.gnome.org/calendar/#freezes">feature freeze for GNOME 46</a> is closing in. Starting Feb 10 no changes to UI, features, and APIs are allowed without <a href="https://handbook.gnome.org/release-planning/freezes.html">approval from the release team</a>.</p>
</blockquote>


<h1 id="gnome-foundation">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gnome-foundation"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GNOME Foundation
</h1><p><a href="https://matrix.to/#/@zana:gnome.org">Rosanna</a> reports</p>
<blockquote>
<p>This week has been very busy for the Foundation staff. I started the beginning of the week meeting with our bookkeepers and discussing our books as well as our budget. Midweek was spent travelling to Brussels, where our Executive Director Holly and I spent yesterday meeting with the GNOME Board of Directors and today meeting with our Advisory Board. This weekend is FOSDEM, where I am looking forward to seeing folks stopping by our booth as well as at GNOME Beers Saturday night. I’ve already had a lot of very productive conversations here in Brussels and am sure there will be many more to come.</p>
</blockquote>


<h1 id="thats-all-for-this-week">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#thats-all-for-this-week"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>That’s all for this week!
</h1><p>See you next week, and be sure to stop by <a href="https://matrix.to/#/#thisweek:gnome.org">#thisweek:gnome.org</a> with updates on your own projects!</p></div>
    </summary>
    <updated>2024-02-02T00:00:00Z</updated>
    <published>2024-02-02T00:00:00Z</published>
    <source>
      <id>https://thisweek.gnome.org/author/felix/</id>
      <author>
        <name>Felix Häcker</name>
      </author>
      <link href="https://thisweek.gnome.org/author/felix/" rel="alternate" type="text/html"/>
      <link href="https://thisweek.gnome.org/author/felix/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content in Felix on This Week in GNOME</subtitle>
      <title>Felix on This Week in GNOME</title>
      <updated>2024-02-02T00:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5620128670216603593.post-3271792953844919770</id>
    <link href="https://ml4711.blogspot.com/feeds/3271792953844919770/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="https://ml4711.blogspot.com/2024/01/fosdemaps.html#comment-form" rel="replies" title="0 Comments" type="text/html"/>
    <link href="https://www.blogger.com/feeds/5620128670216603593/posts/default/3271792953844919770" rel="edit" type="application/atom+xml"/>
    <link href="https://www.blogger.com/feeds/5620128670216603593/posts/default/3271792953844919770" rel="self" type="application/atom+xml"/>
    <link href="https://ml4711.blogspot.com/2024/01/fosdemaps.html" rel="alternate" title="FOSDEMaps" type="text/html"/>
    <title>FOSDEMaps</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6j0Jr5IaqRo8ENVc1v0Sh1-A3XrOqFuvIiqABb0bPXriOkgEmCytGVWj8aJ8-4iquwLnFHXAishlMA2fwCAwuJW9WKP6BSvOSslOchmcRiU5c7QF79r6fL9zbqipcNuhZIlraSR_IqcF82GqGnftmrhTwBzz1hnwHdPkdyP0UrnJ9I_W6wusqOFli/s636/about-46beta.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6j0Jr5IaqRo8ENVc1v0Sh1-A3XrOqFuvIiqABb0bPXriOkgEmCytGVWj8aJ8-4iquwLnFHXAishlMA2fwCAwuJW9WKP6BSvOSslOchmcRiU5c7QF79r6fL9zbqipcNuhZIlraSR_IqcF82GqGnftmrhTwBzz1hnwHdPkdyP0UrnJ9I_W6wusqOFli/s16000/about-46beta.png"/></a></div><p/><p>It's only a couple of days left until that weekend of the week of the turn of month between January and February, and that means it's time again for FOSDEM, gathering FOSS entusiasts in Brussels, Belgium. And I will be there as well!</p><p>There has been some nice improvements in Maps since the end-of-year post before New Years as well.</p><p>James Westman has continued improving vector rendering support in libshumate and also implemented the ability to click on symbols, so you can finally click on labels and icons on the map instead of using the „What's here?” context menu item, doing a reverse geocoding. That always felt a bit like a „work around”. This seems like one of those cases of „a video says more than a thousand images”.</p><div class="separator" style="clear: both; text-align: center;"/><p/><p>This is available when enabling the experimental vector map layer.<br/></p><p><br/></p><p>Another thing I have been working on is improving the experience of the favorites menu. Now instead of showing an insensitive, greye-out button in the headerbar when there are no places marked as favorites now the menu is always accessible, but instead shows an „empty state” when there are no places marked as favorites.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgje_12oYqZvnDxCuapQOI8Mc_OaB8sjzb19JQaRGq420yeBh-irijkTmoXHaHaEY9GhuYJPd0iVJ81DgOoV532xoxHeuOnuAS5dPuXCe7nz7ZX_2Q5oOc_6P4JMw4d2ReZo9ZAIdaVVjObms_tG0arVR2DSL5jK0FrZPgaxIGsHooohYl8JbN2Y2l7/s441/no-favorites.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgje_12oYqZvnDxCuapQOI8Mc_OaB8sjzb19JQaRGq420yeBh-irijkTmoXHaHaEY9GhuYJPd0iVJ81DgOoV532xoxHeuOnuAS5dPuXCe7nz7ZX_2Q5oOc_6P4JMw4d2ReZo9ZAIdaVVjObms_tG0arVR2DSL5jK0FrZPgaxIGsHooohYl8JbN2Y2l7/s16000/no-favorites.png"/></a></div><p>When there are places marked as favorites, there is now a close button next to the item allowing to remove it from favorites (rather than having to select the place and animate there to unmark the star icon in the popover showing).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvW0Hl6l2kxKWxDJSlRPrNKoQmCjR_IZ2WzAv98Gr-dGoNOqwJusbHdEIrSYprz3Cil06DpPa32Br-H1erLti0-vce4UFAYTpvJQV4orUch6FCDL-3GPu7WNKRyT4bN88AnQsntwoM_yYiO20o3GSgP36_D24LqsXZ397ITQsHIIBpOI67n_xftM28/s441/favorites-close.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvW0Hl6l2kxKWxDJSlRPrNKoQmCjR_IZ2WzAv98Gr-dGoNOqwJusbHdEIrSYprz3Cil06DpPa32Br-H1erLti0-vce4UFAYTpvJQV4orUch6FCDL-3GPu7WNKRyT4bN88AnQsntwoM_yYiO20o3GSgP36_D24LqsXZ397ITQsHIIBpOI67n_xftM28/s16000/favorites-close.png"/></a></div><br/><p>When removing a favorite from menu a „toast” is displayed offering to undo this action (similar to when e.g. deleting files in Files).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-bGzZBt8cKpj2Jr3Sa-7byHg2024ghFMHo6kv4lyZoqAdMgGdcAr-j9uQX9yuu9ZOgDDz81yVDsRHu7n4l_EalLxRhJsJJCfUlrIqVflov4QVQXwBXFl7sucikvjEvEwy2SEyKu2lKKnH3CLyt2fxqAPgfQL-EWhjve0E3pPpZbMcgEGewA90g0LA/s517/undo-remove-favorite.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-bGzZBt8cKpj2Jr3Sa-7byHg2024ghFMHo6kv4lyZoqAdMgGdcAr-j9uQX9yuu9ZOgDDz81yVDsRHu7n4l_EalLxRhJsJJCfUlrIqVflov4QVQXwBXFl7sucikvjEvEwy2SEyKu2lKKnH3CLyt2fxqAPgfQL-EWhjve0E3pPpZbMcgEGewA90g0LA/s16000/undo-remove-favorite.png"/></a></div><br/><p>Jakub Steiner has redesigned the map pin icon.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWIyr3RSGebHM8U8cVjVZ1mk3mZAN-7W3eMKKBy6p3XxMwreMj9XxlnUY65-hwpQFNAsj4t7V6M6dCoYmoKx5Pf_3Ed0HuB0qR_-9KVId_GMK_sk0g0FphWHBi23S-B2a6zijLX7YCXZZw8mydACMSY_RORdh_E1HQA8qCtdFKFC0CAjHm139PEb_9/s441/redesigned-pin.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWIyr3RSGebHM8U8cVjVZ1mk3mZAN-7W3eMKKBy6p3XxMwreMj9XxlnUY65-hwpQFNAsj4t7V6M6dCoYmoKx5Pf_3Ed0HuB0qR_-9KVId_GMK_sk0g0FphWHBi23S-B2a6zijLX7YCXZZw8mydACMSY_RORdh_E1HQA8qCtdFKFC0CAjHm139PEb_9/s16000/redesigned-pin.png"/></a></div><br/><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCI0N7cMF90juZNPc7Q7P7OG9FfWnvG-BJUloT_z8Bu9zhIJ8l5zkDnszPG1kL0RhiHHe0JDrV-EYnhZ76KQmSZ1Rlr7rB5OvZFGDWYrMfhyphenhyphen10HMwWWqNq-9xy9dSi7zxDR4hEo_QT8q4DjIZhNihL8EsYHSt13hi6EB1Ws-1FqoAO1JsyYNjwPsNA/s578/map-pin-bubble.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCI0N7cMF90juZNPc7Q7P7OG9FfWnvG-BJUloT_z8Bu9zhIJ8l5zkDnszPG1kL0RhiHHe0JDrV-EYnhZ76KQmSZ1Rlr7rB5OvZFGDWYrMfhyphenhyphen10HMwWWqNq-9xy9dSi7zxDR4hEo_QT8q4DjIZhNihL8EsYHSt13hi6EB1Ws-1FqoAO1JsyYNjwPsNA/s16000/map-pin-bubble.png"/></a></div><br/><p>Compared to the old Tango-style icon that, while being a nice icon that has served us well looked a bit out-of-place in relation to the new UI style with a more 3D look.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0REy8ZsIGh52NEYXTP6NwQ1lHbrrnpLUIUh9HAFWbpwIMp47WRjtLdxDeLXa6_IPc4SbKVJa6OL-51fahdiFMYR3gGpdUk7MzVeHZ-RF-9Ov3zkMdm6ixaa2QupqYQxLB8FRvrHQ_xI73cf_H2_nB8X2XOdVGvz9CNfi1KIkUuZDfF_CzUKRE4ULE/s290/old-map-pin.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0REy8ZsIGh52NEYXTP6NwQ1lHbrrnpLUIUh9HAFWbpwIMp47WRjtLdxDeLXa6_IPc4SbKVJa6OL-51fahdiFMYR3gGpdUk7MzVeHZ-RF-9Ov3zkMdm6ixaa2QupqYQxLB8FRvrHQ_xI73cf_H2_nB8X2XOdVGvz9CNfi1KIkUuZDfF_CzUKRE4ULE/s16000/old-map-pin.png"/></a></div><br/><p>Another new feature was thought up when looking for a cafe in a shopping mall in Riga during GUADEC last year is showing information about the floor location of places. There two established tags in OSM for this: <span style="font-family: courier;">level </span><span style="font-family: inherit;">which represents the number of floors relative to the ground floor (or the lowest ground floor for buildings built in a <span style="font-size: small;">souterrain fascion). In this case we now show this information in a spelled-out form for ground level or above, or below ground level (with provision for using localized plural forms).<br/></span></span></p><p><span style="font-family: inherit;"/></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRsiJKxq_7KaBs-_du2yxXpKwtwDxiPxWdnGQeMlrlQjxkOK5NRYebNCdJF__PoBE3zwISbBPnbZRSG65LK9Apss2zo4U1m6gnGBqmosPv1bZDj2abWORMVr_MRN7YcF4r0IaaoesQ45wAgaWD1TD6deouPzef20Bv2lUlAEbM-xF4Kpdbr0JdXe3u/s484/ground-level.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRsiJKxq_7KaBs-_du2yxXpKwtwDxiPxWdnGQeMlrlQjxkOK5NRYebNCdJF__PoBE3zwISbBPnbZRSG65LK9Apss2zo4U1m6gnGBqmosPv1bZDj2abWORMVr_MRN7YcF4r0IaaoesQ45wAgaWD1TD6deouPzef20Bv2lUlAEbM-xF4Kpdbr0JdXe3u/s16000/ground-level.png"/></a></span></div><span style="font-family: inherit;"><br/><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXLpeli30vNB5dafybLz6oNDnczESjalghnQF_GKRyz-tWmuYLX9UjHIqnhYfyr1VIIPZA5BPXp60DZboz-O4v0WHGBLWQbDhTxUo3piZim8ARbHQ7r4Gj934dvTTLaD0tnq-LsKU8f20fnZKJtWmd1-TwM7VVEdCIyG5gPk9YhspuGX3Jh44wLQBf/s452/floor-1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXLpeli30vNB5dafybLz6oNDnczESjalghnQF_GKRyz-tWmuYLX9UjHIqnhYfyr1VIIPZA5BPXp60DZboz-O4v0WHGBLWQbDhTxUo3piZim8ARbHQ7r4Gj934dvTTLaD0tnq-LsKU8f20fnZKJtWmd1-TwM7VVEdCIyG5gPk9YhspuGX3Jh44wLQBf/s16000/floor-1.png"/></a></div><br/><span style="font-size: small;">The other tag is </span></span><span style="font-family: courier; font-size: small;">level:ref </span><span style="font-family: inherit; font-size: small;">referring a literal floor designation as „written in the elevator“. This could be fully spelled-out named floors, or numbers with suffixes and so on. When this is available we'll refer to that one as this would directly correspond to actual writing on-site.</span><p/><p/><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4CiYvOMZbD15Zoqf1tBDGQQdkl9MXqE_EGlGhwvJBn88vuzQ2IJam51FPvP7dzO9hyNGPuKaKO119-i9gtXqHFksvV33kyl-RtzhzTTa42TN-x5Z13l9w__v-r4Hg05WyukuEKESNYmrO_ciTPUW_S9I-7lUee036v4Cw5S9UH7d9CL1mCxVNEYza/s484/floor-ref.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4CiYvOMZbD15Zoqf1tBDGQQdkl9MXqE_EGlGhwvJBn88vuzQ2IJam51FPvP7dzO9hyNGPuKaKO119-i9gtXqHFksvV33kyl-RtzhzTTa42TN-x5Z13l9w__v-r4Hg05WyukuEKESNYmrO_ciTPUW_S9I-7lUee036v4Cw5S9UH7d9CL1mCxVNEYza/s16000/floor-ref.png"/></a></div><br/><span style="font-family: inherit; font-size: small;">Lastly James has added support for showing descriptions in the info bubble when clicking on points in a GeoJSON shape files when present. It also now shows the name of the shape file in the info bubble (this shape file was from an old GUADEC in Strasbourg).<br/></span><p/><p/><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9uYM8fWTzZ_AMLNC059alup-zYyxsMYLfOGYV6vsTMJR5rJF9Ibv_iXHhWBUJrCrWhdBm8WkKDxGoqcrtEv2BPc2D8kas75N2lj9IQFpsHUc7vpCNcJlysnh8lb-LYLOOqQxPzbflGYVKdUuxWojRAGZTehvXHyCkRGgKnvVIhDzW0e3IEfgDWOgy/s561/shape-layer-popover.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9uYM8fWTzZ_AMLNC059alup-zYyxsMYLfOGYV6vsTMJR5rJF9Ibv_iXHhWBUJrCrWhdBm8WkKDxGoqcrtEv2BPc2D8kas75N2lj9IQFpsHUc7vpCNcJlysnh8lb-LYLOOqQxPzbflGYVKdUuxWojRAGZTehvXHyCkRGgKnvVIhDzW0e3IEfgDWOgy/s16000/shape-layer-popover.png"/></a></div><br/><span style="font-family: inherit; font-size: small;">Maybe I forgot something, but I think those where the highlights of new stuff so far in 2024.</span><p/><p><span style="font-family: inherit; font-size: small;">Maybe see you in Brussels in a couple of days!<br/></span></p></div>
    </content>
    <updated>2024-01-31T22:11:00Z</updated>
    <published>2024-01-31T22:11:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="FOSDEM"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="gnome"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="gnome maps"/>
    <author>
      <name>Marcus Lundblad</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02923955229568787222</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5620128670216603593</id>
      <category term="gnome"/>
      <category term="maps"/>
      <category term="gnome maps"/>
      <category term="openstreetmap"/>
      <category term="routing"/>
      <category term="transit"/>
      <category term="FOSDEM"/>
      <category term="excursions"/>
      <category term="GNOME Maps 3.34"/>
      <category term="GNOME Maps 3.36"/>
      <category term="GNOME Maps 3.38"/>
      <category term="gpx"/>
      <category term="gtfs"/>
      <category term="gtk+"/>
      <category term="gtk4."/>
      <category term="libshumate"/>
      <category term="summer"/>
      <author>
        <name>Marcus Lundblad</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02923955229568787222</uri>
      </author>
      <link href="https://ml4711.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="https://www.blogger.com/feeds/5620128670216603593/posts/default" rel="self" type="application/atom+xml"/>
      <link href="https://ml4711.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="https://www.blogger.com/feeds/5620128670216603593/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>The Maps and Geo Blog</title>
      <updated>2024-01-31T22:12:18Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-977684764667858073.post-1080938334021017622</id>
    <link href="https://www.hadess.net/feeds/1080938334021017622/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=977684764667858073&amp;postID=1080938334021017622" rel="replies" title="0 Comments" type="text/html"/>
    <link href="https://www.blogger.com/feeds/977684764667858073/posts/default/1080938334021017622" rel="edit" type="application/atom+xml"/>
    <link href="https://www.blogger.com/feeds/977684764667858073/posts/default/1080938334021017622" rel="self" type="application/atom+xml"/>
    <link href="https://www.hadess.net/2024/01/re-new-responsibilities.html" rel="alternate" title="Re: New responsibilities" type="text/html"/>
    <title>Re: New responsibilities</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p> A few months have passed since <a href="https://www.hadess.net/2023/08/new-responsibilities.html">New Responsibilities</a> was posted, so I thought I would provide an update.</p><p/><p><b>Projects Maintenance</b></p><p>Of all the freedesktop projects I created and maintained, only one doesn't have a new maintainer, <a href="https://gitlab.freedesktop.org/hadess/low-memory-monitor">low-memory-monitor</a>.</p><p>This daemon is what the <a href="https://developer-old.gnome.org/gio/stable/GMemoryMonitor.html">GMemoryMonitor</a> GLib API is based on, so it can't be replaced trivially. <a href="https://gitlab.gnome.org/GNOME/glib/-/issues/2931">Efforts seem to be under way</a> to replace it with systemd APIs.</p><p>As for the other daemons:</p><ul style="text-align: left;"><li><a href="https://gitlab.freedesktop.org/hadess/switcheroo-control/">switcheroo-control</a> got picked up by Jonas Ådahl, one of the mutter maintainers. I'm looking forward to seeing <a href="https://gitlab.freedesktop.org/hadess/switcheroo-control/-/merge_requests/68">this merge request</a> fixed so we can have better menu items on dual-GPU systems</li><li><a href="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/">iio-sensor-proxy</a> added Dylan Van Assche to its maintenance team, assisting Guido Günther.</li><li><a href="https://gitlab.freedesktop.org/upower/power-profiles-daemon">power-profiles-daemon</a> is now maintained by Marco Trevisan. It recently got support for separate system and CPU power profiles, and <a href="https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/merge_requests/137">display power saving features</a> are in the works.</li></ul><p>(As an aside, there's posturing towards <a href="https://discussion.fedoraproject.org/t/f40-change-proposal-tuned-replaces-power-profiles-daemon-self-contained/94995">replacing power-profiles-daemon with tuned in Fedora</a>. I would advise stakeholders to figure out whether having a large Python script in the boot hot path is a good idea, taking a look at bootcharts, and then thinking about whether hardware manufacturers would be able to help with supporting a tool with so many moving parts. Useful for tinkering, not for shipping in a product)</p><p><b>Updated responsibilities</b></p><p>Since mid-August, I've joined the Platform Enablement Team. Right now, I'm helping out with maintenance of the Bluetooth kernel stack in RHEL (and thus CentOS).</p><p/><p/><p/><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ_PzvmL81pWXLelkdOQeYRfBo6-HgQN40mcxpLdqgnE6Ey_kutFN2FB0YqNpo7QvgAzAi8AjW39EltSAW3SfAykWcwZL7BemTbS_P4B0n6afZCKQpThl7prv8BY0dWGi14UdRpwW30izWTeOIKPVgulXCvF_8NXoqsCc1pE7dIKVbD4xPk6fV8e7MPjzqFaHmc_jdyw/s761/only-throw-bluetooth.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ_PzvmL81pWXLelkdOQeYRfBo6-HgQN40mcxpLdqgnE6Ey_kutFN2FB0YqNpo7QvgAzAi8AjW39EltSAW3SfAykWcwZL7BemTbS_P4B0n6afZCKQpThl7prv8BY0dWGi14UdRpwW30izWTeOIKPVgulXCvF_8NXoqsCc1pE7dIKVbD4xPk6fV8e7MPjzqFaHmc_jdyw/s16000/only-throw-bluetooth.png"/></a></div>The goal is to eventually pivot to hardware enablement, which is likely to involve backporting and testing, more so than upstream enablement. This is currently dependent on attending some formal kernel development (and debugging) training sessions which should make it easier to see where my hodge-podge kernel knowledge stands.<p/><p><b>Blog backlog</b></p><p>Before being moved to a different project, and apart from the usual and very time-consuming bug triage, user support and project maintenance, I also worked on a few new features. I have a few posts planned that will lay that out.<br/></p></div>
    </content>
    <updated>2024-01-31T11:33:00Z</updated>
    <published>2024-01-31T11:33:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="bluetooth"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="freedesktop"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="iio"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="iio-sensor-proxy"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="kernel"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="power-profiles-daemon"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="switcheroo-control"/>
    <author>
      <name>Bastien Nocera</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/14621847888418739807</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-977684764667858073</id>
      <category term="gnome"/>
      <category term="totem"/>
      <category term="bluetooth"/>
      <category term="fedora"/>
      <category term="guadec"/>
      <category term="gnome-bluetooth"/>
      <category term="football"/>
      <category term="films"/>
      <category term="hackfest"/>
      <category term="funny"/>
      <category term="control-center"/>
      <category term="kernel"/>
      <category term="manutd"/>
      <category term="epiphany"/>
      <category term="freedesktop"/>
      <category term="gnome-shell"/>
      <category term="gstreamer"/>
      <category term="gtk+"/>
      <category term="ps3"/>
      <category term="grilo"/>
      <category term="gvfs"/>
      <category term="linux"/>
      <category term="bugs"/>
      <category term="flatpak"/>
      <category term="fprint"/>
      <category term="gnome 3"/>
      <category term="rhythmbox"/>
      <category term="videos"/>
      <category term="webkit"/>
      <category term="bluez"/>
      <category term="freefa"/>
      <category term="geoclue"/>
      <category term="thumbnailer"/>
      <category term="design"/>
      <category term="gnome-settings-daemon"/>
      <category term="pulseaudio"/>
      <category term="stripes"/>
      <category term="apple"/>
      <category term="gcds"/>
      <category term="glib"/>
      <category term="gnome-phone-manager"/>
      <category term="hardware"/>
      <category term="wayland"/>
      <category term="NetworkManager"/>
      <category term="browser plugin"/>
      <category term="dell"/>
      <category term="empathy"/>
      <category term="france"/>
      <category term="gnome-media"/>
      <category term="lirc"/>
      <category term="obex"/>
      <category term="power"/>
      <category term="upower"/>
      <category term="xdg"/>
      <category term="youtube"/>
      <category term="dbus"/>
      <category term="drivers"/>
      <category term="flash"/>
      <category term="games"/>
      <category term="gnokii"/>
      <category term="google"/>
      <category term="keyboard"/>
      <category term="laptop"/>
      <category term="libfprint"/>
      <category term="lua"/>
      <category term="nautilus"/>
      <category term="podcast"/>
      <category term="power-profiles-daemon"/>
      <category term="red hat"/>
      <category term="shared-mime-info"/>
      <category term="systemd"/>
      <category term="tablet"/>
      <category term="telepathy"/>
      <category term="touch"/>
      <category term="ubuntu"/>
      <category term="wacom"/>
      <category term="xorg"/>
      <category term="afc"/>
      <category term="amazon"/>
      <category term="bbc"/>
      <category term="fifa"/>
      <category term="gnome-control-center"/>
      <category term="gnome-lirc-properties"/>
      <category term="gnome-user-share"/>
      <category term="gnome3"/>
      <category term="gom"/>
      <category term="guardian"/>
      <category term="mythtv"/>
      <category term="opengl"/>
      <category term="playlist parser"/>
      <category term="remote control"/>
      <category term="upnp"/>
      <category term="volume control"/>
      <category term="xdg-app"/>
      <category term="arm"/>
      <category term="blog"/>
      <category term="bugzilla"/>
      <category term="chip"/>
      <category term="clutter"/>
      <category term="codec buddy"/>
      <category term="dual-gpu"/>
      <category term="dvd"/>
      <category term="ebay"/>
      <category term="features"/>
      <category term="firefox"/>
      <category term="foundation"/>
      <category term="freebox"/>
      <category term="gdk-pixbuf"/>
      <category term="git"/>
      <category term="gjs"/>
      <category term="gnome-session"/>
      <category term="gobject-introspection"/>
      <category term="iio-sensor-proxy"/>
      <category term="iphone"/>
      <category term="itunes"/>
      <category term="jdll"/>
      <category term="libgweather"/>
      <category term="low-memory-monitor"/>
      <category term="lyon"/>
      <category term="movie"/>
      <category term="nokia"/>
      <category term="optimus"/>
      <category term="pocket"/>
      <category term="politics"/>
      <category term="rawhide"/>
      <category term="release"/>
      <category term="releases"/>
      <category term="retro"/>
      <category term="ross"/>
      <category term="settings"/>
      <category term="sony ericsson"/>
      <category term="subtitles"/>
      <category term="suspend"/>
      <category term="switcheroo-control"/>
      <category term="theme"/>
      <category term="thomson"/>
      <category term="toys"/>
      <category term="translations"/>
      <category term="tv"/>
      <category term="udev"/>
      <category term="video"/>
      <category term="wishlist"/>
      <category term="a11y"/>
      <category term="accelerometer"/>
      <category term="als"/>
      <category term="application"/>
      <category term="birthday"/>
      <category term="bluetooth-sendto"/>
      <category term="builder"/>
      <category term="ca va pas"/>
      <category term="champions"/>
      <category term="cheese"/>
      <category term="cinema"/>
      <category term="comics"/>
      <category term="compass"/>
      <category term="contacts"/>
      <category term="critics"/>
      <category term="cross compilation"/>
      <category term="desktop summit"/>
      <category term="development"/>
      <category term="documentation"/>
      <category term="dvb"/>
      <category term="ebook"/>
      <category term="ebooks"/>
      <category term="eeepc"/>
      <category term="epub"/>
      <category term="euro 08"/>
      <category term="ffmpeg"/>
      <category term="firewall"/>
      <category term="flathub"/>
      <category term="fprintd"/>
      <category term="gdb"/>
      <category term="geeksphone"/>
      <category term="geocoding"/>
      <category term="gnome-books"/>
      <category term="gnome-builder"/>
      <category term="gnome-power-manager"/>
      <category term="google video"/>
      <category term="hadouken"/>
      <category term="humble bundle"/>
      <category term="icons"/>
      <category term="igalia"/>
      <category term="iio"/>
      <category term="interviews"/>
      <category term="ipad"/>
      <category term="ipod touch"/>
      <category term="javascript"/>
      <category term="joypad"/>
      <category term="kde"/>
      <category term="languages"/>
      <category term="libimobiledevice"/>
      <category term="libreoffice"/>
      <category term="light"/>
      <category term="macos x"/>
      <category term="moblin"/>
      <category term="motorola"/>
      <category term="multitouch"/>
      <category term="nautilus-sendto"/>
      <category term="ninja gaiden"/>
      <category term="nintendo ds"/>
      <category term="notifications"/>
      <category term="office-runner"/>
      <category term="ogg"/>
      <category term="old age"/>
      <category term="old farts"/>
      <category term="olivier"/>
      <category term="online desktop"/>
      <category term="pedant"/>
      <category term="playstation"/>
      <category term="plumbers"/>
      <category term="privacy"/>
      <category term="python"/>
      <category term="qemu"/>
      <category term="radio"/>
      <category term="rip"/>
      <category term="rotation"/>
      <category term="rpm"/>
      <category term="samsung"/>
      <category term="script"/>
      <category term="search"/>
      <category term="security"/>
      <category term="series"/>
      <category term="shit-in-a-box"/>
      <category term="sixaxis"/>
      <category term="sms"/>
      <category term="sound"/>
      <category term="sound-juicer"/>
      <category term="spam"/>
      <category term="speaker"/>
      <category term="stripes-guy"/>
      <category term="svn"/>
      <category term="symbolic"/>
      <category term="tango"/>
      <category term="tracker"/>
      <category term="usability"/>
      <category term="usb"/>
      <category term="vim"/>
      <category term="website"/>
      <category term="wine"/>
      <category term="wireless"/>
      <category term="xcompile"/>
      <category term="xfce"/>
      <category term="xine-lib"/>
      <category term="10 years"/>
      <category term="3g"/>
      <category term="5 years"/>
      <category term="8-bit"/>
      <category term="C.H.I.P."/>
      <category term="PolicyKit"/>
      <category term="RAM"/>
      <category term="abrt"/>
      <category term="acme"/>
      <category term="adafruit"/>
      <category term="adb"/>
      <category term="adobe"/>
      <category term="adreno"/>
      <category term="adwaita"/>
      <category term="airplane mode"/>
      <category term="alsa"/>
      <category term="ambient light sensor"/>
      <category term="android"/>
      <category term="animation"/>
      <category term="article"/>
      <category term="audio"/>
      <category term="avahi"/>
      <category term="avr"/>
      <category term="backlight"/>
      <category term="bank holidays"/>
      <category term="basket-ball"/>
      <category term="beer"/>
      <category term="bemused"/>
      <category term="berlin"/>
      <category term="best practices"/>
      <category term="blu-ray"/>
      <category term="board"/>
      <category term="bolso"/>
      <category term="boo hiss"/>
      <category term="boston"/>
      <category term="brasil"/>
      <category term="brazil"/>
      <category term="bretzel"/>
      <category term="brightness"/>
      <category term="brno"/>
      <category term="broadband"/>
      <category term="bug day"/>
      <category term="bundle"/>
      <category term="cairo"/>
      <category term="calendar"/>
      <category term="call for papers"/>
      <category term="canonical"/>
      <category term="capitalism"/>
      <category term="captive"/>
      <category term="cfp"/>
      <category term="chema"/>
      <category term="chpe"/>
      <category term="chrome"/>
      <category term="chrome os"/>
      <category term="chuck norris"/>
      <category term="clang"/>
      <category term="click"/>
      <category term="client-side windows"/>
      <category term="clocks"/>
      <category term="clothes"/>
      <category term="clutter-gtk"/>
      <category term="comedy club"/>
      <category term="comic relief"/>
      <category term="compression"/>
      <category term="computer"/>
      <category term="con"/>
      <category term="conduit"/>
      <category term="contact-lookup-applet"/>
      <category term="content apps"/>
      <category term="contest"/>
      <category term="contributors"/>
      <category term="corey"/>
      <category term="corporation"/>
      <category term="coscup"/>
      <category term="crack"/>
      <category term="culture beat"/>
      <category term="d420"/>
      <category term="daily mail"/>
      <category term="danny stone"/>
      <category term="dbusmock"/>
      <category term="dd-wrt"/>
      <category term="deadly snail"/>
      <category term="debian"/>
      <category term="debugging"/>
      <category term="defective bodyparts"/>
      <category term="dell mini"/>
      <category term="delta airlines"/>
      <category term="den haag"/>
      <category term="desktop"/>
      <category term="devicekit"/>
      <category term="devil"/>
      <category term="diego"/>
      <category term="dirty scouse"/>
      <category term="discident"/>
      <category term="displaylink"/>
      <category term="divx"/>
      <category term="dns"/>
      <category term="domestic"/>
      <category term="dri3"/>
      <category term="ds4"/>
      <category term="ebbsfleet united"/>
      <category term="elantech"/>
      <category term="elsass"/>
      <category term="embedded"/>
      <category term="emoji"/>
      <category term="endless"/>
      <category term="esperanto"/>
      <category term="event box"/>
      <category term="everton"/>
      <category term="evil"/>
      <category term="evince"/>
      <category term="fail"/>
      <category term="fake"/>
      <category term="fallback"/>
      <category term="filesystems"/>
      <category term="fingerprint reader"/>
      <category term="fleet street"/>
      <category term="floods"/>
      <category term="fluendo"/>
      <category term="folks"/>
      <category term="fonz"/>
      <category term="france inter"/>
      <category term="fran&#xE7;ais"/>
      <category term="freedreno"/>
      <category term="freestylers"/>
      <category term="freud"/>
      <category term="frog"/>
      <category term="gadget"/>
      <category term="galago"/>
      <category term="gandi"/>
      <category term="geoip"/>
      <category term="gesture"/>
      <category term="gettext"/>
      <category term="gift"/>
      <category term="gimp"/>
      <category term="gitlab"/>
      <category term="giveaway"/>
      <category term="gizmo"/>
      <category term="gmyth"/>
      <category term="gnapplet"/>
      <category term="gnome-documents"/>
      <category term="gnome-multiwriter"/>
      <category term="gnome-music"/>
      <category term="gnome-obex-send"/>
      <category term="gnome-obex-server"/>
      <category term="gnome-online-accounts"/>
      <category term="gnome-pilot"/>
      <category term="gobject"/>
      <category term="gog"/>
      <category term="golf"/>
      <category term="goom"/>
      <category term="gps"/>
      <category term="gromit"/>
      <category term="gthread"/>
      <category term="gtk"/>
      <category term="gtk-parasite"/>
      <category term="guilfest"/>
      <category term="gupnp"/>
      <category term="gwladys"/>
      <category term="gypsy"/>
      <category term="hackergotchi"/>
      <category term="hacking"/>
      <category term="hacks"/>
      <category term="halloween"/>
      <category term="harry"/>
      <category term="headphones"/>
      <category term="headset"/>
      <category term="heroes"/>
      <category term="hidden"/>
      <category term="house arrest"/>
      <category term="huawei"/>
      <category term="i18n"/>
      <category term="icedtea"/>
      <category term="icns"/>
      <category term="id theft"/>
      <category term="illustrator"/>
      <category term="im"/>
      <category term="imdb"/>
      <category term="imobiledevice"/>
      <category term="inhibit"/>
      <category term="instapaper"/>
      <category term="intel"/>
      <category term="intel rapid start"/>
      <category term="interruptions"/>
      <category term="iso"/>
      <category term="istanbul"/>
      <category term="jack sensing"/>
      <category term="java"/>
      <category term="jds"/>
      <category term="jmp"/>
      <category term="job"/>
      <category term="kerberos"/>
      <category term="kid"/>
      <category term="kiosk"/>
      <category term="kobo"/>
      <category term="krita"/>
      <category term="last.fm"/>
      <category term="lazy"/>
      <category term="libarchive"/>
      <category term="libcanberra"/>
      <category term="licences"/>
      <category term="lightning talk"/>
      <category term="linux magazine"/>
      <category term="liverpool"/>
      <category term="llvm"/>
      <category term="locale"/>
      <category term="logitech"/>
      <category term="loki"/>
      <category term="london"/>
      <category term="lovefilm"/>
      <category term="lovelock"/>
      <category term="mac mini"/>
      <category term="maemo"/>
      <category term="mailman"/>
      <category term="maintainer"/>
      <category term="making"/>
      <category term="manchester"/>
      <category term="mandriva"/>
      <category term="maps"/>
      <category term="margarita"/>
      <category term="megadrive"/>
      <category term="meme"/>
      <category term="memory"/>
      <category term="meson"/>
      <category term="microphone"/>
      <category term="microsoft"/>
      <category term="mo5"/>
      <category term="mobi"/>
      <category term="moron"/>
      <category term="mpris"/>
      <category term="mpv"/>
      <category term="mugshot"/>
      <category term="multimedia"/>
      <category term="music"/>
      <category term="mypaint"/>
      <category term="nba"/>
      <category term="neologism"/>
      <category term="new statesman"/>
      <category term="nintendo"/>
      <category term="noddy"/>
      <category term="nostalgia"/>
      <category term="nurnberg"/>
      <category term="nutella"/>
      <category term="nvidia"/>
      <category term="oled"/>
      <category term="openismus"/>
      <category term="openraster"/>
      <category term="opensubtitles"/>
      <category term="opera"/>
      <category term="opw"/>
      <category term="osd"/>
      <category term="owncloud"/>
      <category term="pam"/>
      <category term="pam_wrapper"/>
      <category term="pangram"/>
      <category term="panto"/>
      <category term="party"/>
      <category term="patches"/>
      <category term="paypal"/>
      <category term="performance"/>
      <category term="perl"/>
      <category term="peter serafinowicz"/>
      <category term="phone"/>
      <category term="photos"/>
      <category term="pidgin"/>
      <category term="pimusicbox"/>
      <category term="pipewire"/>
      <category term="poche"/>
      <category term="portuguese"/>
      <category term="portugu&#xEA;s"/>
      <category term="poulsbo"/>
      <category term="powertop"/>
      <category term="presentation"/>
      <category term="printer"/>
      <category term="proxy"/>
      <category term="ps4"/>
      <category term="qmi"/>
      <category term="qualcomm"/>
      <category term="quicktime"/>
      <category term="rar"/>
      <category term="raspberry pi"/>
      <category term="ratchet and clank"/>
      <category term="record"/>
      <category term="rental"/>
      <category term="resolv.conf"/>
      <category term="retroarch"/>
      <category term="retrode"/>
      <category term="retromancave"/>
      <category term="reverse engineering"/>
      <category term="review"/>
      <category term="rfkill"/>
      <category term="rhel"/>
      <category term="rio"/>
      <category term="rio500"/>
      <category term="router"/>
      <category term="rpi"/>
      <category term="rtl8723bs"/>
      <category term="rugby"/>
      <category term="running man"/>
      <category term="rygel"/>
      <category term="safari"/>
      <category term="sagem"/>
      <category term="sal&#xFC;"/>
      <category term="scratch"/>
      <category term="screencast"/>
      <category term="screensaver"/>
      <category term="sd card"/>
      <category term="security errata"/>
      <category term="sega"/>
      <category term="sensor"/>
      <category term="service"/>
      <category term="sharing"/>
      <category term="shinobi"/>
      <category term="shop"/>
      <category term="silly"/>
      <category term="simple pairing"/>
      <category term="simpsons"/>
      <category term="sitcoms"/>
      <category term="smoking"/>
      <category term="snes"/>
      <category term="social"/>
      <category term="socks"/>
      <category term="software"/>
      <category term="soundbox"/>
      <category term="speaker testing"/>
      <category term="spice"/>
      <category term="sponsors"/>
      <category term="spotify"/>
      <category term="sql"/>
      <category term="sqlite"/>
      <category term="stage6"/>
      <category term="stanza"/>
      <category term="starbucks"/>
      <category term="starsky"/>
      <category term="status icon"/>
      <category term="stormy"/>
      <category term="strasbourg"/>
      <category term="streaming"/>
      <category term="stupid"/>
      <category term="summer of code"/>
      <category term="sun"/>
      <category term="surface"/>
      <category term="suse"/>
      <category term="taipei"/>
      <category term="taxi"/>
      <category term="teensy"/>
      <category term="templates"/>
      <category term="test suite"/>
      <category term="the register"/>
      <category term="theora"/>
      <category term="tizen"/>
      <category term="tla"/>
      <category term="tmk"/>
      <category term="tories"/>
      <category term="toshiba"/>
      <category term="touchpad"/>
      <category term="touchscreen"/>
      <category term="trackball"/>
      <category term="triage"/>
      <category term="tripes"/>
      <category term="tvcatchup"/>
      <category term="twitter"/>
      <category term="udraw"/>
      <category term="ui hell"/>
      <category term="umockdev"/>
      <category term="unity"/>
      <category term="unlocking"/>
      <category term="upstream"/>
      <category term="utc"/>
      <category term="uwb"/>
      <category term="vaio"/>
      <category term="vichy"/>
      <category term="vimeo"/>
      <category term="vino"/>
      <category term="vlc"/>
      <category term="vnc"/>
      <category term="vorbis"/>
      <category term="vt"/>
      <category term="vuntz"/>
      <category term="wake-ups"/>
      <category term="walk500"/>
      <category term="wasting time"/>
      <category term="wedding"/>
      <category term="west wing"/>
      <category term="wetab"/>
      <category term="wifi"/>
      <category term="wiki"/>
      <category term="windowmaker"/>
      <category term="windows 8"/>
      <category term="windows media player"/>
      <category term="woking"/>
      <category term="work"/>
      <category term="xan"/>
      <category term="xbmc"/>
      <category term="xiph"/>
      <category term="xlib"/>
      <category term="zip"/>
      <category term="zlib"/>
      <category term="zombies"/>
      <category term="zonbu"/>
      <author>
        <name>Bastien Nocera</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/14621847888418739807</uri>
      </author>
      <link href="https://www.hadess.net/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="https://www.blogger.com/feeds/977684764667858073/posts/default" rel="self" type="application/atom+xml"/>
      <link href="https://www.hadess.net/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="https://www.blogger.com/feeds/977684764667858073/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>/bɑs ˈtjɛ̃ no ˈse ʁɑ/  (hadess) | News</title>
      <updated>2024-02-08T18:48:57Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://docs.flathub.org/blog/fosdem-2024</id>
    <link href="https://docs.flathub.org/blog/fosdem-2024" rel="alternate" type="text/html"/>
    <title>Catch Us at FOSDEM 2024!</title>
    <summary>FOSDEM 2024—a free event for software developers to meet, share ideas, and collaborate—is this coming weekend in Brussels, Belgium and we'll be there! Learn where you can find us or even sit down and discuss Flathub itself, metadata and build validation, upcoming changes, and anything else on your mind.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>FOSDEM 2024—a free event for software developers to meet, share ideas, and collaborate—is this coming weekend in Brussels, Belgium and we'll be there! Learn where you can find us or even sit down and discuss Flathub itself, metadata and build validation, upcoming changes, and anything else on your mind.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="bof-saturday-1600-cet">BoF: Saturday 16:00 CET<a class="hash-link" href="https://docs.flathub.org/blog/fosdem-2024#bof-saturday-1600-cet" title="Direct link to BoF: Saturday 16:00 CET">​</a></h2>
<p>The <a href="https://fosdem.org/2024/" rel="noopener noreferrer" target="_blank">FOSDEM website</a> describes BoFs pretty well:</p>
<blockquote>
<p>BOF stands for Birds Of a Feather who, as the saying goes, flock together. FOSDEM has three meeting rooms that may be booked in 30 or 60 minute blocks for discussions. All the meetings are public so anyone who is interested can attend if there is enough space.</p>
</blockquote>
<p>We've reserved a BoF room for <strong>Saturday, February 3 at 16:00</strong> local time (CET, UTC+1); seating is on a first-come, first-served basis, so arrive promptly! We'll be meeting to discuss recent developments around metadata and build validation, other upcoming changes, and anything else on the minds of the attendees. Check the <a href="https://fosdem.org/2024/schedule/event/fosdem-2024-3715-flathub-flatpak-bof/" rel="noopener noreferrer" target="_blank">event</a> for the exact room details (and any scheduling changes).</p>
<p>We hope to see you there!</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="stands">Stands<a class="hash-link" href="https://docs.flathub.org/blog/fosdem-2024#stands" title="Direct link to Stands">​</a></h2>
<p>Various Flathub and Flatpak folks can also be found around associated <a href="https://fosdem.org/2024/stands/" rel="noopener noreferrer" target="_blank">stands</a>:</p>
<ul>
<li><strong>Kodi</strong>: building H, level 1, stand 4</li>
<li><strong>GNOME</strong>: building H, level 1, stand 5</li>
<li><strong>KDE</strong>: building H, level 1, stand 6</li>
<li><strong>Fedora Project</strong>: building AW, level 1, booth 4</li>
<li><strong>Linux on Mobile</strong>: building AW, level 1, booth 7</li>
</ul>
<p>Find us to chat about Flathub, app submission and maintenance, Flatpak, and the Linux desktop app ecosystem.</p></div>
    </content>
    <updated>2024-01-31T00:00:00Z</updated>
    <published>2024-01-31T00:00:00Z</published>
    <category term="flathub"/>
    <category term="event"/>
    <source>
      <id>https://docs.flathub.org/blog</id>
      <author>
        <name>Flathub Blog</name>
      </author>
      <link href="https://docs.flathub.org/blog" rel="alternate" type="text/html"/>
      <link href="https://docs.flathub.org/blog/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Flathub Documentation Blog</subtitle>
      <title>Flathub Documentation Blog</title>
      <updated>2024-01-31T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>https://blog.sebastianwick.net/posts/booting-into-toolbox-containers/</id>
    <link href="https://blog.sebastianwick.net/posts/booting-into-toolbox-containers/" rel="alternate" type="text/html"/>
    <title>Booting into Toolbox Containers</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>There are a lot of tangible benefits in using toolbox containers for development to the point that I don’t want to use anything else anymore. Even with <a href="https://blog.sebastianwick.net/posts/silverblue-development-utils/">a bunch of tricks</a> at our disposal, there are still downsides. The containers are not complete sessions but rather try to integrate with the host session. If you’re working on something that is part of a session it might be possible to run a test suite and even more elaborate setups but running it fully integrated often becomes a problem.</p>
<p>If the host is a traditional mutable system it’s possible to just not use toolbox. If you’re on an immutable system they often offer some way to make it mutable temporarily using some kind of overlay at which point they behave mostly like the traditional mutable systems. The unfortunate side effect is that you don’t get the benefits of toolbox anymore.</p>
<p>It’s also possible to develop in the toolbox and on the host system at the same time, depending on what specifically you’re working on right now to get the benefits of both systems. The drawback is that the toolbox container and the host are different systems. You’re setting up, compiling, etc. everything twice and run your project in different environments. Also not ideal.</p>
<p>We can do better. Toolbox can, in theory, use arbitrary OCI images. In practice there are assumptions from toolbox on how an image looks and behaves. Fedora Silverblue, or rather rpm-ostree, can also, in theory, boot arbitrary OCI images but also comes with its assumptions.</p>
<p>It turns out that in practice the unofficial OCI image variant of Fedora Silverblue can be used as a toolbox image and the images of such containers can be booted into with rpm-ostree.</p>
<div class="highlight"><pre class="chroma" tabindex="0"><code class="language-sh"><span class="line"><span class="cl">$ toolbox create -i quay.io/fedora-ostree-desktops/silverblue:39 my-silverblue-toolbox
</span></span><span class="line"><span class="cl">$ toolbox enter my-silverblue-toolbox
</span></span><span class="line"><span class="cl">⬢ <span class="c1"># install dnf to make it behave like a usual toolbox container</span>
</span></span><span class="line"><span class="cl">⬢ sudo rpm-ostree install -y dnf
</span></span><span class="line"><span class="cl">⬢ sudo dnf update -y
</span></span><span class="line"><span class="cl">⬢ <span class="c1"># Let's install strace and gdb. Do whatever you want with your container! </span>
</span></span><span class="line"><span class="cl">⬢ sudo dnf install -y strace gdb
</span></span><span class="line"><span class="cl">⬢ <span class="nb">exit</span>
</span></span><span class="line"><span class="cl">$ <span class="c1"># some magic to convert the running container into something rpm-ostree understands</span>
</span></span><span class="line"><span class="cl">$ <span class="c1"># there are probably ways to do this with less copying (tell me if you know)</span>
</span></span><span class="line"><span class="cl">$ podman commit my-silverblue-toolbox my-silverblue-toolbox-image
</span></span><span class="line"><span class="cl">$ sudo mkdir -p /var/lib/my-silverblue-toolbox-image
</span></span><span class="line"><span class="cl">$ podman save --format<span class="o">=</span>oci-archive <span class="s2">"my-silverblue-toolbox-image"</span> <span class="p">|</span> sudo tar -x -C <span class="s2">"/var/lib/my-silverblue-toolbox-image"</span>
</span></span><span class="line"><span class="cl">$ sudo rpm-ostree rebase <span class="s2">"ostree-unverified-image:oci:/var/lib/my-silverblue-toolbox-image"</span>
</span></span><span class="line"><span class="cl">$ <span class="c1"># boot into our toolbox</span>
</span></span><span class="line"><span class="cl">$ sudo systemctl reboot -i
</span></span></code></pre></div><p>One toolbox container to develop in and one reboot to test the changes in a full session on real hardware. This is all unsupported and might break in interesting ways but it shows the power of OCI based operating systems and toolbox.</p></div>
    </summary>
    <updated>2024-01-30T12:23:30Z</updated>
    <published>2024-01-30T12:23:30Z</published>
    <source>
      <id>https://blog.sebastianwick.net/posts/</id>
      <author>
        <name>Sebastian Wick</name>
      </author>
      <link href="https://blog.sebastianwick.net/posts/" rel="alternate" type="text/html"/>
      <link href="https://blog.sebastianwick.net/posts/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Sebastian Wick, CC BY-ND 4.0</rights>
      <subtitle>Recent content in Posts on swick's blog</subtitle>
      <title>Posts on swick's blog</title>
      <updated>2024-01-30T12:23:30Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/aday/?p=10405</id>
    <link href="https://blogs.gnome.org/aday/2024/01/30/announcing-the-gnome-project-handbook/" rel="alternate" type="text/html"/>
    <title>Announcing the GNOME Project Handbook</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I’m a firm believer in the importance of documentation for open source projects, particularly when it comes to onboarding new contributors. To attract and retain contributors, you need good docs. Those docs aren’t just important for practical information on how to contribute (though that is important). They’re also important when it comes to understanding the … <a class="more-link" href="https://blogs.gnome.org/aday/2024/01/30/announcing-the-gnome-project-handbook/">Continue reading <span class="screen-reader-text">Announcing the GNOME Project Handbook</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="https://blogs.gnome.org/aday/2024/01/30/announcing-the-gnome-project-handbook/handbook/" rel="attachment wp-att-10495"><img alt="" class="alignnone size-full wp-image-10495" height="1080" src="https://blogs.gnome.org/aday/files/2024/01/handbook.png" width="1920"/></a></p>
<p>I’m a firm believer in the importance of documentation for open source projects, particularly when it comes to onboarding new contributors. To attract and retain contributors, you need good docs. </p>
<p>Those docs aren’t just important for practical information on how to contribute (though that is important). They’re also important when it comes to understanding the more general aspects of a project, like how decisions are made, who the stakeholders are, what the history is, and so on. For new contributors, understanding these aspects of a project is essential to being able to participate. (They are also the aspects of a project that established contributors often take for granted.)</p>
<p>Of course, ensuring that you always have up to date project documentation isn’t easy. This is particularly true for large, long-running projects, where the tendency is for large amounts of documentation to get written and then eventually left to rot. As  redundant and inaccurate docs accumulate, they increasingly misdirect and impede contributors.</p>
<p>This characterization has unfortunately has been true for GNOME for some time. For many years, the main source of project documentation has been <a href="https://wiki.gnome.org/">the wiki</a> and, for a long time, the vast majority of that wiki content has been either inaccurate or redundant. We can only assume that, with so much out of date information floating around, countless hours of have been lost, with existing contributors struggling to find the information they need, and new potential contributors being put off before they have even gotten started.</p>
<h2>Enough with the preamble</h2>
<p>The poor state of GNOME’s documentation has been something that I’ve wanted to tackle for some time, so it’s with great excitement that I’m happy to announce a new, completely rewritten documentation resource for the project: the <a href="https://handbook.gnome.org">GNOME Project Handbook</a> (otherwise known as handbook.gnome.org).</p>
<p>The handbook is a new website whose goal is to provide accessible, well-maintained documentation about how to get stuff done within GNOME. It has a specific scope: it does not provide technical documentation for those using GNOME technologies, nor does it contain user documentation, nor does it attempt to provide public-facing home pages for apps and libraries. What it does contain is the information required to operate as a GNOME contributor.</p>
<p>The fact that handbook.gnome.org is able to have this relatively tight focus is thanks to a collection of other GNOME sites, each of which replaces a role previously played by the wiki. This includes <a href="https://apps.gnome.org/">apps.gnome.org</a>, <a href="https://developer.gnome.org/">developer.gnome.org</a>, and <a href="https://welcome.gnome.org/">welcome.gnome.org</a>. Thank you to the creators of those resources!</p>
<p>The handbook site itself is managed like any other GNOME project. There’s <a href="https://gitlab.gnome.org/Teams/Websites/handbook.gnome.org">a repository that generates the site</a>, issues can be reported, and changes can be proposed through merge requests. The hope is that this will avoid many of the maintenance issues that we previously had with the wiki.</p>
<h2>Notable content</h2>
<p>The handbook is composed of pages from the wiki, which have largely been rewritten, plus a decent amount of original content. There are some sections which I’m particularly excited about, and want to highlight.</p>
<h3>Issue tracker guidelines</h3>
<p>GNOME has had issue reporting and triage guidelines for almost two decades. However, it has been many years since they were actively maintained, and they were never updated when GNOME migrated from Bugzilla to GitLab. I think that a lot of contributors have forgotten that they even exist.</p>
<p>The handbook includes a fresh <a href="https://handbook.gnome.org/issues.html">set of issue tracking guidelines</a>, which have been updated for the modern era. They’re based on the old ones from many years ago, but have been substantially revised and expanded. The new guidelines cover <a href="https://handbook.gnome.org/issues/reporting.html">how to report an issue</a>, <a href="https://handbook.gnome.org/issues/review.html">how to review issues for quality and relevance</a>, and <a href="https://handbook.gnome.org/issues/management.html">policies and best practices for maintainers</a>. One exciting new aspect is<a href="https://handbook.gnome.org/issues/review.html#contributing"> guidelines for those who want to get started with issue review as a new contributor</a>.</p>
<p>I’m hopeful that having clear processes and guidelines around issue tracking will have an enabling effect for contributors and maintainers, so they can be more forthright when it comes to issue management, and in so doing get our issues trackers into a better state. </p>
<h3>Governance</h3>
<p>The handbook has <a href="https://handbook.gnome.org/governance.html">a page on governance</a>! It describes how decisions are made in GNOME, the various roles in the project, who has authority, and how the project works. Us old hands tend to assume this stuff, but for new contributors it’s essential information, and we never documented it before.</p>
<h3>How to submit a code change</h3>
<p>Amazingly — incredibly! — until this day, GNOME has not documented how to submit a code change to the project. We just left people to figure it out by themselves. This is <a href="https://handbook.gnome.org/development/change-submission.html">something that the handbook covers</a>. If you’ve ever wanted to submit a change to GNOME and haven’t known how, give it a read over.</p>
<h3>Infrastructure</h3>
<p>The <a href="https://handbook.gnome.org/infrastructure.html">infrastructure pages</a> aren’t new, but they were previously causing some confusion and so have been substantially rewritten. The new pages aim to make it really clear which services are available, <a href="https://handbook.gnome.org/infrastructure/developer-access.html">how developer permissions are managed</a>, and how to get access when you need it.</p>
<h2>What next?</h2>
<p>It’s still early days for the handbook. Most of the core content is in, but there will be issues and missing pieces. If you spot any problems, there’s <a href="https://gitlab.gnome.org/Teams/Websites/handbook.gnome.org/-/issues">an issue tracker</a>. You can also submit merge requests or make suggestions (<a href="https://gitlab.gnome.org/Teams/Websites/handbook.gnome.org/-/issues">the project README</a> has more information on this).</p>
<p>The plan is to retire the wiki. An exact time line for this has yet to be set (there will be an announcement when that happens). However, it’s encouraged to consult the handbook rather than the wiki from this point forward and, if you’re continuing to use the wiki for anything, to move that content elsewhere. There’s a <a href="https://hedgedoc.gnome.org/wiki-migration-guide?view">migration guide</a> with details about how to do this.</p>
<p>Many thanks to those who have helped with this project, including but not limited to: Jakub Steiner, Andrea Veri, Emmanuele Bassi, Michael Catanzaro, Brage Fuglseth, Florian Muellner, Alexandre Franke, Sebastian Wick, and Kolja Lampe.</p></div>
    </content>
    <updated>2024-01-30T11:32:09Z</updated>
    <published>2024-01-30T11:32:09Z</published>
    <author>
      <name>Allan</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/aday</id>
      <link href="https://blogs.gnome.org/aday/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/aday" rel="alternate" type="text/html"/>
      <subtitle>Allan Day's GNOME Blog</subtitle>
      <title>Form and Function</title>
      <updated>2024-01-30T11:55:43Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/tbernard/?p=10213</id>
    <link href="https://blogs.gnome.org/tbernard/2024/01/29/save-the-date-berlin-mini-guadec-2024/" rel="alternate" type="text/html"/>
    <title>Save the Date: Berlin Mini GUADEC 2024</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This year’s GUADEC is going to be in the USA, making it difficult to attend both for Visa/border control reasons and because it’s not easy to get to from Europe without flying. Many of us want to avoid the massive emissions in particular (around 3 tons of CO2, which is half the yearly per-capita emissions … <a class="more-link" href="https://blogs.gnome.org/tbernard/2024/01/29/save-the-date-berlin-mini-guadec-2024/">Continue reading <span class="screen-reader-text">Save the Date: Berlin Mini GUADEC 2024</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>This year’s GUADEC is <a href="https://foundation.gnome.org/2023/12/20/guadec-2024-in-denver-colorado">going to be in the USA</a>, making it difficult to attend both for Visa/border control reasons and because it’s not easy to get to from Europe without flying. Many of us want to avoid the massive emissions in particular (around <a href="https://co2.myclimate.org/en/portfolios?calculation_id=6639893">3 tons of CO2</a>, which is <a href="https://ourworldindata.org/grapher/co-emissions-per-capita">half the yearly per-capita emissions</a> in most European countries). If that’s you, too, you’re in luck because we’re doing yet another edition of the fabulous Berlin Mini GUADEC!</p>
<p>Berlin has one of the largest GNOME local groups in the world, and is relatively easy to get to from most of Europe by train (should be even easier now thanks to <a href="https://www.europeansleeper.eu">new night train options</a>). At our last <a href="https://blogs.gnome.org/tbernard/2022/07/30/berlin-mini-guadec-2022">Mini GUADEC in 2022</a> we had people join from all over Europe, including Italy, Belgium, Czech Republic, and the UK.</p>
<p>The local Berlin community has grown steadily over the past few years, with regular events and local hackfests such as the <a href="https://blogs.gnome.org/tbernard/2023/06/16/berlin-mobile-hackfest">Mobile</a> and <a href="https://blogs.gnome.org/tbernard/2023/11/23/local-first-workshop-feat-p2panda">Local-first</a> hackfests last year, including collaborations with other communities (such as postmarketOS and p2panda). We hope to make this year’s Mini GUADEC another opportunity for friends from outside the project to join and work on cool stuff with us.</p>
<p>We’re still in the process of figuring out the venue, but we can already announce that the 2024 Mini GUADEC will cover both the conference and BoF days (<strong>July 19-24</strong>), so you can already mark it on your calendars and start booking trains :)</p>
<p>If you already know you’re going to join, feel free to <a href="https://hedgedoc.gnome.org/berlin-mini-guadec-2024">sign up by adding your name to this Hedgedoc</a>, and join the <a href="https://matrix.to/#/#berlin-mini-guadec:gnome.org">Matrix room</a>. If you don’t have a GNOME account, please email <a href="mailto:berlinminiguadec@mailup.net">berlinminiguadec@mailup.net</a> to let us know you’re coming.</p>
<p>See you in Berlin!</p></div>
    </content>
    <updated>2024-01-29T16:19:32Z</updated>
    <published>2024-01-29T16:19:32Z</published>
    <author>
      <name>Tobias Bernard</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/tbernard</id>
      <link href="https://blogs.gnome.org/tbernard/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/tbernard" rel="alternate" type="text/html"/>
      <subtitle>Tobias Bernard's GNOME Blog</subtitle>
      <title>Space and Meaning</title>
      <updated>2024-01-29T16:19:32Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6112936277054198647.post-8214834066896729794</id>
    <link href="https://who-t.blogspot.com/feeds/8214834066896729794/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6112936277054198647&amp;postID=8214834066896729794" rel="replies" title="2 Comments" type="text/html"/>
    <link href="https://www.blogger.com/feeds/6112936277054198647/posts/default/8214834066896729794" rel="edit" type="application/atom+xml"/>
    <link href="https://www.blogger.com/feeds/6112936277054198647/posts/default/8214834066896729794" rel="self" type="application/atom+xml"/>
    <link href="https://who-t.blogspot.com/2024/01/new-gitlabfreedesktoporg-emoji-based.html" rel="alternate" title="New gitlab.freedesktop.org &#x1F6AF; emoji-based spamfighting abilities" type="text/html"/>
    <title>New gitlab.freedesktop.org 🚯 emoji-based spamfighting abilities</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>
  This is a follow-up from <a href="https://who-t.blogspot.com/2023/03/new-gitlabfreedesktoporg-spamfighting.html">our Spam-label approach</a>, but this time with MOAR EMOJIS because that's what the world is turning into.
</p>
<p>
  Since March 2023 projects could apply the "Spam" label on any new issue and have a magic bot come in and purge the user account plus all issues they've filed, see the <a href="https://who-t.blogspot.com/2023/03/new-gitlabfreedesktoporg-spamfighting.html">earlier post</a> for details. This works quite well and gives every project member the ability to quickly purge spam. Alas, pesky spammers are using other approaches to trick google into indexing their pork [1] (because at this point I think all this crap is just SEO spam anyway). Such as commenting on issues and merge requests. We can't apply labels to comments, so we found a way to work around that: emojis!
</p>
<p>
  In GitLab you can add "reactions" to issue/merge request/snippet comments and in recent GitLab versions you can register for a <a href="https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html#emoji-events" target="_blank">webhook</a> to be notified when that happens. So what we've added to the gitlab.freedesktop.org instance is support for the <b>:do_not_litter:</b> (🚯) emoji [2] - if you set that on an comment the author of said comment will be blocked and the comment content will be removed. After some safety checks of course, so you can't just go around blocking everyone by shotgunning emojis into gitlab. Unlike the "Spam" label this does not currently work recursively so it's best to report the user so admins can purge them properly - ideally <i>before</i> setting the emoji so the abuse report contains the actual spam comment instead of the redacted one. Also note that there is a 30 second grace period to quickly undo the emoji if you happen to set it accidentally.
</p>
<p>
  Note that for purging issues, the "Spam" label is still required, the emojis only work for comments.
</p>
<p>
  Happy cleanup!
</p>
<p>
  <small>
    [1] or pork-ish <br/>
    [2] Benjamin wanted to use <i>:poop:</i> but there's a chance that may get used for expressing disagreement with the comment in question <br/>
  </small>
</p></div>
    </content>
    <updated>2024-01-29T07:58:00Z</updated>
    <published>2024-01-29T07:58:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="gitlab"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="freedesktop.org"/>
    <author>
      <name>Peter Hutterer</name>
      <email>noreply@blogger.com</email>
      <uri>https://www.blogger.com/profile/17204066043271384535</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6112936277054198647</id>
      <category term="git"/>
      <category term="kernel"/>
      <category term="compiz"/>
      <category term="gitlab"/>
      <category term="configuration"/>
      <category term="xkb"/>
      <category term="x"/>
      <category term="fedora"/>
      <category term="tig"/>
      <category term="multitouch"/>
      <category term="libratbag"/>
      <category term="tutorial"/>
      <category term="wayland"/>
      <category term="xorg.conf"/>
      <category term="input device properties"/>
      <category term="tuhi"/>
      <category term="workflow"/>
      <category term="hid"/>
      <category term="gnome-device-setup"/>
      <category term="mpx"/>
      <category term="outdoors"/>
      <category term="gnome"/>
      <category term="libevdev"/>
      <category term="xds"/>
      <category term="xi2"/>
      <category term="wacom"/>
      <category term="evemu"/>
      <category term="xorg"/>
      <category term="xlib"/>
      <category term="libinput"/>
      <category term="hal"/>
      <category term="synaptics"/>
      <category term="freedesktop.org"/>
      <category term="xts"/>
      <category term="evtest"/>
      <category term="evdev"/>
      <category term="libei"/>
      <category term="libinput. wayland"/>
      <author>
        <name>Peter Hutterer</name>
        <email>noreply@blogger.com</email>
        <uri>https://www.blogger.com/profile/17204066043271384535</uri>
      </author>
      <link href="https://www.blogger.com/feeds/6112936277054198647/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="https://www.blogger.com/feeds/6112936277054198647/posts/default" rel="self" type="application/atom+xml"/>
      <link href="http://who-t.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="https://www.blogger.com/feeds/6112936277054198647/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <title>Who-T</title>
      <updated>2024-02-07T04:17:46Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blog.gtk.org/?p=9754</id>
    <link href="https://blog.gtk.org/2024/01/28/new-renderers-for-gtk/" rel="alternate" type="text/html"/>
    <title>New renderers for GTK</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Recently, GTK gained not one, but two new renderers: one for GL and one for Vulkan. Since naming is hard, we reused existing names and called them “ngl” and “vulkan”. They are built from the same sources, therefore we also call them “unified” renderers. But what is exciting about them? A single source As mentioned … <a class="more-link" href="https://blog.gtk.org/2024/01/28/new-renderers-for-gtk/">Continue reading<span class="screen-reader-text"> "New renderers for GTK"</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Recently, GTK gained not one, but two new renderers: one for GL and one for Vulkan.</p>
<p>Since naming is hard, we reused existing names and called them “ngl” and “vulkan”. They are built from the same <a href="https://gitlab.gnome.org/GNOME/gtk/-/tree/main/gsk/gpu">sources</a>, therefore we also call them “unified” renderers.</p>
<p>But what is exciting about them?</p>
<h3>A single source</h3>
<p>As mentioned already, the two renderers are built from the same source. It is modeled to follow Vulkan apis, with some abstractions to cover the differences between Vulkan and GL (more specifically, GL 3.3+ and GLES 3.0+). This lets us share much of the infrastructure for walking the scene graph, maintaining transforms and other state, caching textures and glyphs, and will make it easier to keep both renderers up-to-date and on-par.</p>
<p>Could this unified approach be extended further, to cover a Metal-based renderer on macOS or a DirectX-based one on Windows? Possibly. The advantage of the Vulkan/GL combination is that they share basically the same shader language (GLSL, with some variations). That isn’t the case for Metal or DirectX. For those platforms, we either need to duplicate the shaders or use a translation tool like <a href="https://github.com/KhronosGroup/SPIRV-Cross">SPIRV-Cross</a>.</p>
<p>If that is the kind of thing that excites you, help is welcome.</p>
<h3>Implementation details</h3>
<p>The old GL renderer uses simple shaders for each rendernode type and frequently resorts to offscreen rendering for more complex content. The unified renderers have (more capable) per-node shaders too, but instead of relying on offscreens, they will also use a complex shader that interprets data from a buffer. In game programming, this approach is known as a <a href="https://dolphin-emu.org/blog/2017/07/30/ubershaders/">ubershader</a>.</p>
<p>The unified renderer implementation is less optimized than the old GL renderer, and has been written with a focus on correctness and maintainability. As a consequence, it can handle much more varied rendernode trees correctly.</p>
<p>Here is an harmless-looking example:</p>
<pre>repeat {
  bounds: 0 0 50 50;
  child: border {
    outline: 0 0 4.3 4.3;
    widths: 1.3;
  }
}</pre>
<figure class="wp-caption aligncenter" id="attachment_9883" style="width: 120px;"><a href="https://blog.gtk.org/files/2024/01/difficult.png"><img alt="" class="wp-image-9883 size-full" height="50" src="https://blog.gtk.org/files/2024/01/difficult.png" width="120"/></a><figcaption class="wp-caption-text" id="caption-attachment-9883">gl (left) ngl (right)</figcaption></figure>
<figure class="wp-caption aligncenter" id="attachment_9886" style="width: 300px;"><a href="https://blog.gtk.org/files/2024/01/difficult-zoom.png"><img alt="" class="wp-image-9886 size-medium" height="125" src="https://blog.gtk.org/files/2024/01/difficult-zoom-300x125.png" width="300"/></a><figcaption class="wp-caption-text" id="caption-attachment-9886">A close-up view</figcaption></figure>
<h3>New capabilities</h3>
<p>We wouldn’t have done all this work, if there wasn’t some tangible benefit. Of course, there’s new features and capabilities. Lets look at some:</p>
<p><em>Antialiasing. </em>A big problem with the old GL renderer is that it will just lose fine details. If something is small enough to fall between the boundaries of a single line of pixels, it will simply disappear. In particular this can affect  underlines, such as mnemonics. The unified renderers handle such cases better, by doing antialiasing. This helps not just for preserving fine detail, but also prevents jagged outlines of primitives.</p>
<figure class="wp-caption aligncenter" id="attachment_9805" style="width: 300px;"><a href="https://blog.gtk.org/files/2024/01/aa.png"><img alt="" class="wp-image-9805 size-medium" height="150" src="https://blog.gtk.org/files/2024/01/aa-300x150.png" width="300"/></a><figcaption class="wp-caption-text" id="caption-attachment-9805">Close-up view of GL vs NGL</figcaption></figure>
<p><em>Fractional scaling. </em>Antialiasing is also the basis that lets us handle fractional scales properly. If your  1200 × 800 window is set to be scaled to 125 %, with the unified renderers, we will use a framebuffer of size 1500 × 1000 for it, instead of letting the compositor downscale a 2400 × 1600 image. Much less pixels, and a sharper image.</p>
<p><em>Arbitrary gradients. </em>The old GL renderer handles linear, radial and conic gradients with up to 6 color stops. The unified renders allow an <em>unlimited</em> number of color stops. The new renderers also apply antialiasing to gradients, so sharp edges will have smooth lines.</p>
<figure class="wp-caption aligncenter" id="attachment_9895" style="width: 301px;"><a href="https://blog.gtk.org/files/2024/01/lg1.png"><img alt="" class="wp-image-9895" height="47" src="https://blog.gtk.org/files/2024/01/lg1.png" width="301"/></a><figcaption class="wp-caption-text" id="caption-attachment-9895">A linear gradient with 64 color stops</figcaption></figure>
<p><em>Dmabufs. </em>As a brief detour from the new renderers, we worked on dmabuf support and graphics offloading <a href="https://blog.gtk.org/2023/11/15/introducing-graphics-offload/">last fall</a>. The new renderers support this and extend it to create dmabufs when asked to produce a texture via the <a href="https://docs.gtk.org/gsk4/method.Renderer.render_texture.html">render_texture</a> api (currently, just the Vulkan renderer).</p>
<h3>Any sharp edges?</h3>
<p>As is often the case, with new capabilities comes the potential for new gotchas. Here are some things to be aware of, as an app developer:</p>
<p><em>No more glshader nodes.</em> Yes, they made for some fancy demos for 4.0, but they are very much tied to the old GL renderer, since they make assumptions about the GLSL api exposed by that renderer. Therefore, the new renderers don’t support them.</p>
<p>You have been warned in the docs:</p>
<blockquote><p>If there is a problem, this function returns FALSE and reports an error. You should use this function before relying on the shader for rendering and use a fallback with a simpler shader or without shaders if it fails.</p></blockquote>
<p>Thankfully, many uses of the glshader node are no longer necessary, since GTK has gained new features since 4.0, such as mask nodes and support for straight-alpha textures.</p>
<p><em>Fractional positions.</em> The old GL renderer is rounding things, so you could get away with handing it fractional positions. The new renderers will place things where you tell it. This can sometimes have unintended <a href="https://gitlab.gnome.org/GNOME/gtk/-/issues/6361">consequences</a>, so should be on the lookout and make sure that your positions are where they should be.</p>
<p>In particular, look out for out for cairo-style drawing where you place lines at half-pixel positions so they fill out one row of pixels precisely.</p>
<p><em>Driver problems. </em>The new renderers are using graphics drivers in new and different ways, so there is potential for triggering problems on that side.</p>
<p>Please file problems you see against GTK even if they look like driver issues, since it is useful for us to get an overview how well (or badly) the new code works with the variety of drivers and hardware out there.</p>
<h3>But is it faster?</h3>
<p>No, the new renderers are not faster (yet).</p>
<p>The old GL renderer is heavily optimized for speed. It also uses much simpler shaders, and does not do the math that is needed for features such as antialiasing. We want to make the new renderers faster eventually, but the new features and correctness make them very exciting, even before we reach that goal. All of the GPU-based renderers are more than fast enough to render todays GTK apps at 60 or 144 fps.</p>
<p>That being said, the Vulkan renderer comes close to matching and surpassing the old GL renderer in some unscientific benchmarks. The new GL renderer is slower for some reason that we have not tracked down yet.</p>
<h3>New defaults</h3>
<p>In the just-released 4.13.6 snapshot, we have made the ngl renderer the new default. This is a trial balloon — the renderers need wider testing with different apps too verify that they are ready for production. If significant problems appear, we can revert back to the gl renderer for 4.14.</p>
<p>We decided not make the Vulkan renderer the default yet, since it is behind the GL renderers in a few application integration aspects: the webkit GTK4 port works with GL, not with Vulkan, and GtkGLArea and GtkMediaStream currently both produce GL textures that the Vulkan renderer can’t directly import. All of these issues will hopefully be addressed in the not-too-distant future, and then we will revisit the default renderer decision.</p>
<p>If you are using GTK on very old hardware, you may be better off with the old GL renderer, since it makes fewer demands on the GPU. You can override the renderer selection using the GSK_RENDERER environment variable:</p>
<pre>GSK_RENDERER=gl</pre>
<h3>Future plans and possibilities</h3>
<p>The new renderers are a good foundation to implement things that we’ve wanted to have for a long time, such as</p>
<ul>
<li>Proper color handling (including HDR)</li>
<li>Path rendering on the GPU</li>
<li>Possibly including glyph rendering</li>
<li>Off-the-main-thread rendering</li>
<li>Performance (on old and less powerful devices)</li>
</ul>
<p>Some of these will be a focus of our work in the near and medium-term future.</p>
<h3>Summary</h3>
<p>The new renderers have some exciting features, with more to come.</p>
<p>Please try them out, and let us know what works and what doesn’t work for you.</p></div>
    </content>
    <updated>2024-01-28T17:12:25Z</updated>
    <published>2024-01-28T17:12:25Z</published>
    <author>
      <name>mclasen</name>
    </author>
    <source>
      <id>https://blog.gtk.org</id>
      <link href="https://blog.gtk.org/author/mclasen/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blog.gtk.org" rel="alternate" type="text/html"/>
      <subtitle>All things GTK</subtitle>
      <title>mclasen – GTK Development Blog</title>
      <updated>2024-02-03T15:02:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://hansdegoede.dreamwidth.org/28153.html</id>
    <link href="https://hansdegoede.dreamwidth.org/28153.html" rel="alternate" type="text/html"/>
    <title>A fully open source stack for MIPI cameras</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Many recent Intel laptops have replaced the standard UVC USB camera module with a raw MIPI camera-sensor connected to the IPU6 found in recent Intel laptop chips.<br/><br/>Both the hw interface of the ISP part of the IPU6 as well as the image processing algorithms used are considered a trade secret and so far the only Linux support for the IPU6 relies on an out of tree kernel driver with a proprietary userspace stack on top, which is currently available in <a href="https://hansdegoede.dreamwidth.org/27235.html">rpmfusion</a>.<br/><br/>Both Linaro and Red Hat have identified the missing ISP support for various ARM and X86 chips as a problem. Linaro has started a project to add a SoftwareISP component to libcamera to allow these cameras to work without needing proprietary software and Red Hat has joined Linaro in working on this.<br/><br/><span style="font-size: x-large;">FOSDEM talk</span><br/><br/>Bryan O'Donoghue (Linaro) and I are giving <a href="https://fosdem.org/2024/schedule/event/fosdem-2024-3013-a-fully-open-source-stack-for-mipi-cameras/">a talk about this at FOSDEM</a>.<br/><br/><span style="font-size: x-large;">Fedora COPR repository</span><br/><br/>This work is at a point now where it is ready for wider testing. <a href="https://copr.fedorainfracloud.org/coprs/jwrdegoede/ipu6-softisp/">A Fedora COPR repository</a> with a patched kernel and libcamera is now available for users to test, see <a href="https://copr.fedorainfracloud.org/coprs/jwrdegoede/ipu6-softisp/">the COPR page</a> for install and test instructions.<br/><br/>This has been tested on the following devices:<ul><li>Lenovo ThinkPad X1 yoga gen 8 (should work on any ThinkPad with ov2740 sensor)</li><li>Dell Latitude 9420 (ov01a1s sensor)</li><li>HP Spectre x360 13.5 (2023 model, hi556 sensor)</li></ul><br/><span style="font-size: x-large;">Description of the stack</span><br/><ol><li>Kernel driver for the camera sensor, for the ov2740 used on current Lenovo designs (excluding MTL) I have landed all necessary kernel changes for this upstream.</li><li>Kernel support for the CSI receiver part of the IPU6 Intel is working on upstreaming this and has recently posted <a href="https://lore.kernel.org/linux-media/20240111065531.2418836-1-bingbu.cao@intel.com/">v3 of their patch series</a> for this upstream and this is under active review.</li><li>A FOSS Software ISP stack inside libcamera to replace the missing IPU6 ISP (processing-system/psys) support. Work on this is under way. I've recently send out <a href="https://lists.libcamera.org/pipermail/libcamera-devel/2024-January/040113.html">v2 of the patch-series for this</a>.</li><li>Firefox pipewire camera support and support for the camera portal to get permission to access the camera. My colleague Jan Grulich has been working on this, see <a href="https://jgrulich.cz/2023/11/24/pipewire-camera-support-in-firefox-2/">Jan's blogpost</a>. Jan's work has landed in the just released Firefox 122.</li></ol><br/><br/><br/><img alt="comment count unavailable" height="12" src="https://www.dreamwidth.org/tools/commentcount?user=hansdegoede&amp;ditemid=28153" style="vertical-align: middle;" width="30"/> comments</div>
    </summary>
    <updated>2024-01-26T16:42:07Z</updated>
    <published>2024-01-26T16:42:07Z</published>
    <category term="ipu6"/>
    <category term="fedora"/>
    <source>
      <id>https://hansdegoede.dreamwidth.org/</id>
      <logo>https://v.dreamwidth.org/16479769/3892031</logo>
      <author>
        <name>Hans de Goede</name>
      </author>
      <link href="https://hansdegoede.dreamwidth.org/" rel="alternate" type="text/html"/>
      <link href="https://hansdegoede.dreamwidth.org/data/rss" rel="self" type="application/rss+xml"/>
      <subtitle>Hans de Goede - Dreamwidth Studios</subtitle>
      <title>Hans de Goede</title>
      <updated>2024-01-26T16:42:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/a11y/?p=88</id>
    <link href="https://blogs.gnome.org/a11y/2024/01/26/automated-testing/" rel="alternate" type="text/html"/>
    <link href="https://blogs.gnome.org/a11y/2024/01/26/automated-testing/#comments" rel="replies" type="text/html"/>
    <link href="https://blogs.gnome.org/a11y/2024/01/26/automated-testing/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en-US">Automated testing of GNOME accessibility features</title>
    <summary type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml">GNOME is partipating in the December 2023 – February 2024 round of Outreachy. As part of this project, our interns Dorothy Kabarozi and Tanju Achaleke have extended our end-to-end tests to cover some of GNOME’s accessibility features. End-to-end testing, also known as UI testing, involves simulating user interactions with GNOME’s UI. In this case we’re … <a class="more-link" href="https://blogs.gnome.org/a11y/2024/01/26/automated-testing/">Continue reading <span class="screen-reader-text">Automated testing of GNOME accessibility features</span></a></div>
    </summary>
    <content type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml"><p>GNOME is partipating in the <a href="https://www.outreachy.org/">December 2023 – February 2024</a> round of Outreachy. As part of this project, our interns <a href="https://dorothykabarozi.wordpress.com/">Dorothy Kabarozi</a> and <a href="https://tanjuachaleke.wordpress.com/">Tanju Achaleke</a> have extended our end-to-end tests to cover some of GNOME’s accessibility features.</p>
<p>End-to-end testing, also known as UI testing, involves simulating user interactions with GNOME’s UI. In this case we’re using a virtual machine which runs <a href="https://os.gnome.org/">GNOME OS</a>, so the tests run on the latest, in-development version of GNOME built from the <a href="https://gitlab.gnome.org/GNOME/gnome-build-meta/">gnome-build-meta</a> integration repo. The tests send keyboard &amp; mouse events to trigger events in the VM, and use fuzzy screenshot comparisons to assert correct behavior. We use a tool called <a href="http://open.qa/">openQA</a> to develop and run the tests.</p>
<p>Some features are easier to test than others. So far we’ve added tests for the following accessibility features:</p>
<ul>
<li>High contrast theme</li>
<li>Large text theme</li>
<li>Always-visible scrollbars</li>
<li>Audio over-amplification (boost volume above 100%)</li>
<li>Visual alerts (flash screen when the error ‘bell’ sound plays)</li>
<li>Text-to-speech using Speech Dispatcher</li>
<li>Magnifier (zoom)</li>
<li>On-screen keyboard</li>
</ul>
<p>In this screenshot you can see some of the tests:</p>
<p><img alt="Screenshot of openqa.gnome.org showing tests like a11y_high_contrast, a11y_large_text, etc." class="alignnone" height="690" src="https://s3.us-east-2.amazonaws.com/hedgedoc-gnome-org/uploads/e0e45245-179b-458b-99dc-256a06edc9d2.png" width="1296"/></p>
<p>Here’s a link to the actual test run from the screenshot: <a href="https://openqa.gnome.org/tests/3058">https://openqa.gnome.org/tests/3058</a></p>
<p>These tests run every time the <a href="https://gitlab.gnome.org/GNOME/gnome-build-meta/">gnome-build-meta</a> integration repo is updated, so we can very quickly detect if a code change in the ‘main’ branch of any GNOME module has unintentionally caused a regression in some accessibility feature.</p>
<ul>
<li>GNOME’s accessibility features are seeing some design and implementation improvements at the moment, thanks to several volunteer contributors, investments from the <a href="https://foundation.gnome.org/2023/11/09/gnome-recognized-as-public-interest-infrastructure/">Sovereign Tech Fund</a> and Igalia, and more. As improvements land, the tests will need updating too. Screenshots can be updated using openQA’s web UI, available at <a class="uri" href="https://openqa.gnome.org">https://openqa.gnome.org</a>, there are <a href="https://gitlab.gnome.org/GNOME/gnome-build-meta/-/wikis/openqa/OpenQA-for-GNOME-developers#how-to-update-a-needle">instructions available</a>. The tests themselves live in <a href="https://gitlab.gnome.org/GNOME/openqa-tests">openqa-tests.git</a> and are simple Perl programs using openQA’s <a href="http://open.qa/api/testapi/">testapi</a>. Of course merge requests to extend and improve the tests are very welcome.</li>
</ul>
<p>One important omission from the testsuite today is Orca, the GNOME screen reader. Tanju spent a long time trying to get this to work, and we do have a test that verifies text-to-speech using Speech Dispatcher. Orca itself is more complicated and we’ll need to spend more time to figure out how best to set up end-to-end tests for screen reading.</p>
<p>If you have feedback on the tests, we’d love to hear from you over on the <a href="https://discourse.gnome.org/t/implementing-end-to-end-tests-for-gnome-os-using-openqa-accesibility-tests-feedback/19124">GNOME Discourse forum</a>.</p></div>
    </content>
    <updated>2024-01-26T14:16:25Z</updated>
    <published>2024-01-26T14:16:25Z</published>
    <category scheme="https://blogs.gnome.org/a11y" term="Uncategorized"/>
    <author>
      <name>sthursfield</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/a11y/feed/atom/</id>
      <link href="https://blogs.gnome.org/a11y" rel="alternate" type="text/html"/>
      <link href="https://blogs.gnome.org/a11y/feed/atom/" rel="self" type="application/atom+xml"/>
      <title xml:lang="en-US">GNOME Accessibility</title>
      <updated>2024-01-26T16:10:46Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/pabloyoyoista/?p=73</id>
    <link href="https://blogs.gnome.org/pabloyoyoista/2024/01/26/on-how-to-fork-a-gnome-core-app-without-meaning-to-do-so/" rel="alternate" type="text/html"/>
    <title>On how to fork a GNOME Core app without meaning to do so</title>
    <summary>And if you did not know already, that Core app is Evince, now renamed to Papers and submitted to Incubation this week. But if you’re still interested after the spoiler, let’s start from the beginning. From some hacky patches to 80+ Merge Requests How it all started So for anybody that does not know me, […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>And if you did not know already, that Core app is Evince, now renamed to Papers and submitted to <a href="https://gitlab.gnome.org/GNOME/Incubator/Submission/-/issues/10">Incubation</a> this week. But if you’re still interested after the spoiler, let’s start from the beginning.</p>
<h3>From some hacky patches to 80+ Merge Requests</h3>
<h4>How it all started</h4>
<p>So for anybody that does not know me, I have been until now foremost a <a href="https://postmarketos.org">postmarketOS</a> maintainer. GNOME is my platform of choice, and we often encounter bugs downstream. However, postmarketOS’s policy is <strong>upstream first</strong>, so I ended up doing a lot of things in GNOME. Most of those were small patches for various projects, and many of the issues we had with sizing and Phone usage have been polished through the years with help from people all across the stack. A big chunk of those was fixed through GTK4 ports and implementing new libadwaita patterns and widgets. However, Evince seemed to have been <a href="https://gitlab.gnome.org/GNOME/evince/-/merge_requests/373">stuck</a> on porting to GTK4, and we were still carrying some ugly <a href="https://source.puri.sm/Librem5/evince/-/tree/pureos/byzantium/debian/patches">patches</a>. So I tried to do my best, and more than 1 and a half year ago pushed my <a href="https://gitlab.gnome.org/GNOME/evince/-/merge_requests/455">first MR</a>. What followed was a roller-coaster of emotions.</p>
<h4>How it all continued</h4>
<p>Sending a first patch to a project is something I have learned to really enjoy. It has that mix of excitement for the unknown, looking forward to that <em>this is great, thanks</em>, and the knowledge that I will certainly learn something in the process. But since one patch would not get a massive GTK4 MR solved, I did not stop there, and continue pushing MRs. After some time, I learned some things:</p>
<ul>
<li>Germán was the only active maintainer. So sometimes, things would move fast and he would merge a bunch of my MRs altogether. And sometimes they would stay there without a comment for weeks. And certainly time to answer questions and get me on-boarded into decades-old Evince code was certainly sparse. The few times he was able to, I learned a bunch, but it was still too little for the time I had available.</li>
<li>Evince code is old, for the good, and for the bad. For the good, it concentrates the wisdom of years of development creating a Document Viewer. The authors had taken and tested many design decisions, and overall created a very solid application. For the bad, there was code that probably already existed in pre-glib times. And many things that are now straight-forward to do, had been re-implemented in a custom way. I am still very proud of having removed some non-functional <a href="https://gitlab.gnome.org/GNOME/evince/-/merge_requests/527">code</a> that if alive would have the right to vote in most countries that do.</li>
<li>Evince is not just an application, but two libraries, <code>libdocument</code> and <code>libview</code>, which must remain stable. So many of the cleanups I would have wished to do would had to wait.</li>
</ul>
<p>All these things created a dynamic where: I would have lots of time and motivation; hack in Evince to do some cleanups and forward-port stuff from the GTK4 MR; feel super happy about it and send some MRs; wait for some period that felt long to get any feedback; get totally demotivated about it; sometimes wait some more weeks until getting feedback, context-switching to something else; then get some feedback, but feel bad about it; finally get some motivation back, address the feedback, and back to the beginning. Of course, this wasn’t sustainable.</p>
<h4>Getting help and reaching for help</h4>
<p>In the middle of this process, FOSDEM 2023 happened. And it was a wonderful experience. I got to meet all these postmarketOS people I had been working with for more than a year, as well as many GNOME people from whom I knew, but that were certainly less aware of me. Despite that, everybody was super welcoming, and encouraging. And specially <a href="https://tobiasbernard.com/">Tobias</a> pushed me a bit and managed to get me apply for a grant (that I did not get) to improve Evince. In that process, we tried to approach Germán to talk, and see how could I help with Evince from a more “maintainership” role. Unfortunately, that did not work out. However, that did not solve the adaptability problems for Evince in mobile, so I had to continue trying.</p>
<p>Through all this process, Qiu Wenbo, the author of Evince’s GTK4 port, had continued to tirelessly rebase the GTK4 port on whichever changes we did. And we started to interact, as I moved from back-porting things to reviewing their MR more in-depth. But we still would not get where we wanted to be at full-speed with Germán’s limited time availability. So I reached to the Release Team at GUADEC, and then again some months later, and managed to schedule a very nice call with Germán. We talked about Evince, how would it be possible for me to help, and he created the <code>evince-next</code> branch. There it was (and still is) allowed to break the libraries’ API, remove deprecated functions and be less conservative. Of course, Qiu Wenbo and I sent a lot of MRs, and I tried to get myself entitled to merge stuff, but I was certainly not the main maintainer, and most things still needed Germán’s review. At some point, things to back-port run out. Any work I would like to do would require some hard and careful rebase of the GTK4 branch, and Qiu Wenbo had already context-switched to improvements after the port. It was clear, unfortunately, that the amount of human-power we were able to provide was well above Germán’s availability, and therefore, the changes we were dreaming of likely not fitting within Evince.</p>
<h3>From a casual chat to Incubation in less than two months</h3>
<p>Forking was an option that had been suggested to me since FOSDEM, and reiterated multiple times later. At first, I did not feel ready to take over the code-base. And when I did, I was terrified to do so alone. So mid-December, I asked Qiu Wenbo if he would be willing to fork and maintain the fork with me, with the goal of porting to GTK4, implement new mockups, and modernize the application. He was extremely enthusiastic about the idea, so we started to work on it, notifying both the Release Team and Germán. Our goal was getting the GTK4 MR in by the (gregorian) New Year, to then take care of the breakage later. And I have to admit, the results of the fork are already surpassing all my expectations. In less than 2 months, we’ve managed to merge close to 40 MRs, and already got some external contributors (<a href="https://github.com/sponsors/BrainBlasted">Chris</a> and <a href="https://gitlab.gnome.org/FineFindus">FineFindus</a>, yay!), with more people having showed interest. We also started the rebranding (still missing a slick icon!), and this week, applied with Papers for <a href="https://gitlab.gnome.org/GNOME/Incubator/Submission/-/issues/10">Incubation</a>.</p>
<p>So the overall outcome, nowadays, is net positive. Although it will all depend a bit on the Incubation phase. At the same time, a fork is most of the times the result of some sort of failure. Probably not just of us individual contributors, but of the community as a whole. It is also a big shame to not have Germán next to us in this process. He holds extremely valuable knowledge about PDFs and documents in general, and certainly avoided me messing up more than once. At the same time, life is life, and we’re all volunteers doing our best. I can say, I am sincerely thankful from everything he has taught me, and wish him success in their endeavors. For us, we hope to see Papers flourish, and encourage others to jump on the train to make a modern, adaptive, touch, and multi-device-friendly document viewer for GNOME.</p>
<p>Happy Hacking!</p></div>
    </content>
    <updated>2024-01-26T12:34:17Z</updated>
    <published>2024-01-26T12:34:17Z</published>
    <category term="Uncategorized"/>
    <author>
      <name>pabloyoyoista</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/pabloyoyoista</id>
      <link href="https://blogs.gnome.org/pabloyoyoista/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/pabloyoyoista" rel="alternate" type="text/html"/>
      <title>GNOME adventures in mobile</title>
      <updated>2024-01-26T15:18:08Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://thisweek.gnome.org/posts/2024/01/twig-132/</id>
    <link href="https://thisweek.gnome.org/posts/2024/01/twig-132/" rel="alternate" type="text/html"/>
    <title>#132 Bottom Sheets</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Update on what happened across the GNOME project in the week from January 19 to January 26.</p>
<h1 id="sovereign-tech-fund">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#sovereign-tech-fund"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Sovereign Tech Fund
</h1><p><a href="https://matrix.to/#/@sonny:gnome.org">Sonny</a> says</p>
<blockquote>
<p>As part of the <a href="https://foundation.gnome.org/2023/11/09/gnome-recognized-as-public-interest-infrastructure/">GNOME STF (Sovereign Tech Fund)</a> project, a number of community members are working on infrastructure related projects.</p>
<p>Today we celebrate <a href="https://blogs.gnome.org/sophieh/">Sophie</a> joining the team to work on <a href="https://gitlab.gnome.org/sophie-h/glycin">Glycin</a> to work on</p>
<ul>
<li>Improved sandboxing for image loaders</li>
<li>GObject Introspection support to broaden interoperability with the GNOME platform</li>
</ul>
<p>Accessibility</p>
<ul>
<li>Joanie added a system information presenter in Orca</li>
<li>Joanie finished code clean-up and removal of pyatspi dependency for hypertext and hyperlink interfaces</li>
<li>Joanie started code clean-up creation of AT-SPI2 utilities for Orca’s accessible-text related functionality <a href="https://gitlab.gnome.org/GNOME/orca/-/issues/300">issue</a></li>
<li>Joanie <a href="https://gitlab.gnome.org/GNOME/at-spi2-core/-/issues/154">made a proposal</a> to facilitate text selection via ATK/AT-SPI2 across multiple objects at once (similar to what IAccessible2 created)</li>
<li>Joanie <a href="https://gitlab.gnome.org/GNOME/at-spi2-core/-/issues/153">made a proposal</a> to have an attributes-changed signal for object attributes</li>
<li>Joanie began converting Orca’s WebKitGtk support over to the generic web support currently shared by Chromium and Gecko.</li>
<li>Matt pushed a partial <a href="https://gitlab.freedesktop.org/mwcampbell/wayland-protocols/tree/accessibility">Wayland protocol extension</a> for accessibility consumers (screen readers and the like)</li>
<li>Matt started implementation the accessibility extension as a <a href="https://gitlab.gnome.org/mwcampbell/mutter/tree/wayland-native-a11y">proof of concept in Mutter</a></li>
<li>Tobias investigated where we still use TreeViews and <a href="https://gitlab.gnome.org/GNOME/Initiatives/-/issues/49">started an initiative</a> to port to more accessible widgets (e.g. ListView, ColumnView)</li>
<li>Evan landed <a href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6807">gtk: Add AccessibleList to enable relations in bindings</a>
<ul>
<li>enables languages like GJS and Python to pass lists of Gtk widgets to accessibility relations like LABELLED_BY in GTK4</li>
<li>started a GJS MR for it to apply a convenience override to automatically wrap JS arrays in Gtk.AccessibleList in the relevant APIs</li>
</ul>
</li>
<li>Georges is working on WebKitGTK accessibility
<ul>
<li>experimented with a potential new GTK4 API to be consumed by WebKitGTK. The experiment was a success and it correctly bridged the web page DOM a11y tree with the rest of the program, which allows screen readers and other accessible technologies to read that. I’m currently cleaning up the code and discussing the approach with GTK developers.</li>
<li>published and improved <a href="https://gitlab.gnome.org/feaneron/aleveny">Aleveny</a> a tool to inspect the accessible object tree of apps.</li>
</ul>
</li>
<li>Sonny helped with coordination efforts to land <a href="https://github.com/flatpak/xdg-desktop-portal/pull/1175">High Contrast hint on settings portal</a>
<ul>
<li>Hub will work on <a href="https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/issues/119">GNOME backend implementation</a></li>
</ul>
</li>
</ul>
<p>
<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/f55405e23cea5dde117a68ab1046e15a26ab85df1750972228364664832.png"/>
</p>
<p>Platform</p>
<ul>
<li>Hub fixed a <a href="https://github.com/flatpak/flatpak-builder/pull/579">bug in flatpak-builder rename-appdata-file</a></li>
<li>Julian landed <a href="https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/merge_requests/215">using libadwaita Avatar in gnome-initial-setup</a></li>
<li>Julian is working on extending the XDG portal notification API with sounds and images <a href="https://github.com/flatpak/xdg-desktop-portal/issues/983">portal issue</a></li>
<li>Sonny started a <a href="https://gitlab.gnome.org/jwestman/blueprint-compiler/-/merge_requests/176">proof of concept for a GTK linter</a></li>
<li>Stef joined the team and started working on <a href="https://github.com/flatpak/xdg-desktop-portal/issues/567">GFileMonitor does not work with document portal</a></li>
<li>Evan made progress on async/sync annotations support in introspection, there are currently 4 MRs for it
<ul>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3797">https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3797</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3853">https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3853</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3830">https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3830</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3746">https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3746</a></li>
</ul>
</li>
<li>Evan is investigating the amount of work needed to make WASM support in GJS production ready - currently evaluating the mergeability of multi-threaded promises and import maps</li>
<li>Philip fixed the following in GLib
<ul>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/issues/3218">Segfault in gi_function_info_prep_invoker</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3846">gibaseinfo: Fix use of stack-allocated GIBaseInfos</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3856">girepository: Drop gi_repository_get_default()</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/issues/3234">Reference cycle between GIRepository and GIBaseInfos cached by it</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3854">girnode: Document ownership and element types of internal structs</a></li>
</ul>
</li>
<li>Philip released GLib 2.78.4 and 2.79.1</li>
<li>Alice finished and landed <a href="https://gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/1018">adaptive dialogs</a> (see her individual update below)</li>
</ul>
<p>Hardware support</p>
<ul>
<li>Dor continued iterating on <a href="https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2523#note_1971815">VRR configuration UX in Settings</a></li>
<li>Dor investigated and fixed a number of issues related to VRR
<ul>
<li><a href="https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3521">Remove assumption about fixed refresh rate in empty frame handling</a></li>
<li><a href="https://gitlab.gnome.org/GNOME/mutter/-/issues/3259">Cursor movement becomes synchronized with main content updates after VT switch</a></li>
</ul>
</li>
</ul>
<p>
<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/ec4582d585a6c84eb3c561dc55753708a7771a6f1750973560861491200.png"/>
</p>
<ul>
<li>Alice landed bottom sheets in libadwaita <a href="https://gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/1018">https://gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/1018</a>
<ul>
<li>Documentation <a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Dialog.html">https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Dialog.html</a></li>
<li>There’s also a migration guide for porting apps to using it <a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/migrating-to-adaptive-dialogs.html">https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/migrating-to-adaptive-dialogs.html</a></li>
</ul>
</li>
<li>Jonas (Dreßler) is investigating remaining issues in Jonas (Ådahl) fractional scaling branch</li>
</ul>
<p>Security:</p>
<ul>
<li>Dhanuka continued his work on implementing secret server/backend in oo7 <a href="https://github.com/bilelmoussaoui/oo7/pull/56">https://github.com/bilelmoussaoui/oo7/pull/56</a>
<ul>
<li>implemented <code>CreateCollection</code> and <code>SearchItems</code> on <code>org.freedesOnceCellktop.Secret.Service</code> interface</li>
<li>implemented <code>Delete</code> on <code>org.freedesktop.Secret.Item</code> interface</li>
<li>updated <code>CreateItem</code> on <code>org.freedesktop.Secret.Collection</code> to use <code>oo7::dbus::api::properties::Properties</code></li>
</ul>
</li>
<li>We are investigating and coordinating usage of <a href="https://github.com/systemd/systemd/pull/30968">systemd per-user encrypted credentials</a></li>
</ul>
</blockquote>


<h1 id="gnome-core-apps-and-libraries">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gnome-core-apps-and-libraries"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GNOME Core Apps and Libraries
</h1>

<h3 id="libadwaita">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#libadwaita"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Libadwaita <a href="https://gitlab.gnome.org/GNOME/libadwaita"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Building blocks for modern GNOME apps using GTK4.</p>
<p><a href="https://matrix.to/#/@alexm:gnome.org">Alice (she/her)</a> says</p>
<blockquote>
<p><a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Dialog.html"><code>AdwDialog</code></a> has landed, along with <a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AlertDialog.html"><code>AdwAlertDialog</code></a>, <a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesDialog.html"><code>AdwPreferencesDialog</code></a> and <a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutDialog.html"><code>AdwAboutDialog</code></a>. There’s also a <a href="https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/migrating-to-adaptive-dialogs.html">migration guide</a> for all of the new widgets. The old widgets aren’t deprecated yet, but will be in GNOME 47
<video class="html-video" controls="" preload="auto" width="100%">
    <source src="https://thisweek.gnome.org/posts/2024/01/twig-132/f0f069452220a38eb6a22b2255adc0c9baf8e04c1750946597975359488.mp4" type="video/mp4"/>
  <span>Your browser doesn't support embedded videos, but don't worry, you can <a href="https://thisweek.gnome.org/posts/2024/01/twig-132/f0f069452220a38eb6a22b2255adc0c9baf8e04c1750946597975359488.mp4">download it</a> and watch it with your favorite video player!</span>
</video></p>
</blockquote>


<h3 id="gtk">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gtk"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GTK <a href="https://gitlab.gnome.org/GNOME/gtk"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Cross-platform widget toolkit for creating graphical user interfaces.</p>
<p><a href="https://matrix.to/#/@matthiasc:gnome.org">Matthias Clasen</a> says</p>
<blockquote>
<p>The GTK 4.13.6 release out this week changes the default renderer to be the ngl renderer.</p>
<p>The intent of this change is to get wider testing and verify that the new renderers are production-ready. If significant problems show up, it may get reverted for the stable 4.14 release in March.</p>
<p>You can still override the renderer choice using the GSK_RENDERER environment variable.</p>
<p>Since ngl can handle fractional scaling much better than the old gl renderer, fractional scaling is now enabled by default with gl.</p>
<p>If you are using the old gl renderer (e.g. because your system is limited to GLES2), you can disable fractional scaling by setting the GDK_DEBUG environment variable to include the gl-no-fractional key.</p>
</blockquote>


<h3 id="maps">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#maps"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Maps <a href="https://wiki.gnome.org/Apps/Maps"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Maps gives you quick access to maps all across the world.</p>
<p><a href="https://matrix.to/#/@mlundblad:matrix.org">mlundblad</a> says</p>
<blockquote>
<p>Maps now shows an empty state for the favorites menu, and also allows removing favorites directly from the popover (with an undo toast). Also James Westman has improved GeoJSON shapelayer rendering, show descriptions for marked places, and also shows the layer name in the bubbles

<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/gdnQzesBfJhGqrRSXAbFdiEF.png"/>


<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/BlwfuKfoppWrnNNwpSObCTry.png"/>


<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/IdeYYADZnirrdbtPDNbQEPMS.png"/>


<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/ykvbMLazOFGiUuVwWDydbfWh.png"/>
</p>
</blockquote>


<h1 id="gnome-circle-apps-and-libraries">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#gnome-circle-apps-and-libraries"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>GNOME Circle Apps and Libraries
</h1>

<h3 id="fragments">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#fragments"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Fragments <a href="https://gitlab.gnome.org/World/Fragments"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#link"/></svg></a>
</h3><p>Easy to use BitTorrent client.</p>
<p><a href="https://matrix.to/#/@felix:haecker.io">Felix</a> announces</p>
<blockquote>
<p>Fragments now allows you to search for added torrents 🔎
<video class="html-video" controls="" preload="auto" width="100%">
    <source src="https://thisweek.gnome.org/posts/2024/01/twig-132/znRKVwnQYCTGXLWddfLoNmRr.webm" type="video/webm"/>
  <span>Your browser doesn't support embedded videos, but don't worry, you can <a href="https://thisweek.gnome.org/posts/2024/01/twig-132/znRKVwnQYCTGXLWddfLoNmRr.webm">download it</a> and watch it with your favorite video player!</span>
</video></p>
</blockquote>


<h1 id="third-party-projects">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#third-party-projects"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Third Party Projects
</h1><p><a href="https://matrix.to/#/@bilelmoussaoui:gnome.org">Bilal Elmoussaoui</a> announces</p>
<blockquote>
<p><a href="https://github.com/bilelmoussaoui/oo7">oo7</a>, a Rust client library for interacting with the system keyring, received two new additions:</p>
<ul>
<li>A rewrite of secret-tool, a cli application to interact with the keyring</li>
<li>A rewrite of the secret portal</li>
</ul>
<p>On top of that Dhanuka Warusadura have been working on a server side implementation

<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/2e5bc670ab0fae61af708597d53fb5a4c9fdaec41750614100586528768.png"/>
</p>
</blockquote>
<p><a href="https://matrix.to/#/@badcel:matrix.org">badcel</a> announces</p>
<blockquote>
<p>I published the repository <a href="https://github.com/badcel/Maus">Maus</a> containing an early stages Adwaita C# app which allows to configure a Microsoft Intellimouse Pro. Feedback is welcome.</p>
</blockquote>


<h1 id="miscellaneous">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#miscellaneous"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>Miscellaneous
</h1><p><a href="https://matrix.to/#/@cassidyjames:gnome.org">Cassidy James</a> reports</p>
<blockquote>
<p>Flathub, the app store developed by KDE, GNOME, and independent contributors, has <a href="https://docs.flathub.org/blog/over-one-million-active-users-and-growing">announced over one million active users</a>! This means when you bring your app to Flathub—either independently or as a part of <a href="https://circle.gnome.org/">GNOME Circle</a>—you’re reaching a potential audience of over a million Linux users.</p>
</blockquote>
<p><a href="https://matrix.to/#/@dorothyk:matrix.org">Dorothy K</a> reports</p>
<blockquote>
<p>As Outreachy Interns,for the past couple of weeks Tanjuate and I have been working on implementing end-to-end testing for GNOME with openQA for <a href="https://www.outreachy.org/">Outreachy</a> and our focus in the last few weeks has been a11y tests for GNOME OS.We have written tests for accessibility features ie, High contrast,Large text,Overlay scrollbars, Screen reader, Zoom, Over amplification,Visual alerts and On Screen Keyboard features.</p>
<p>Take a look at some of the tests we have added with a prefix “a11y-” <a href="https://openqa.gnome.org/tests/3058">here</a> and this <a href="https://discourse.gnome.org/t/implementing-end-to-end-tests-for-gnome-os-using-openqa-accesibility-tests-feedback/19124">post</a> for more context

<img alt="" src="https://thisweek.gnome.org/posts/2024/01/twig-132/outreachy.png"/>
</p>
</blockquote>


<h1 id="thats-all-for-this-week">
<a class="heading-anchor" hidden="hidden" href="https://thisweek.gnome.org/author/felix/index.xml#thats-all-for-this-week"><svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://thisweek.gnome.org/images/icons.svg#anchor"/></svg></a>That’s all for this week!
</h1><p>See you next week, and be sure to stop by <a href="https://matrix.to/#/#thisweek:gnome.org">#thisweek:gnome.org</a> with updates on your own projects!</p></div>
    </summary>
    <updated>2024-01-26T00:00:00Z</updated>
    <published>2024-01-26T00:00:00Z</published>
    <source>
      <id>https://thisweek.gnome.org/author/felix/</id>
      <author>
        <name>Felix Häcker</name>
      </author>
      <link href="https://thisweek.gnome.org/author/felix/" rel="alternate" type="text/html"/>
      <link href="https://thisweek.gnome.org/author/felix/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content in Felix on This Week in GNOME</subtitle>
      <title>Felix on This Week in GNOME</title>
      <updated>2024-02-02T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://docs.flathub.org/blog/over-one-million-active-users-and-growing</id>
    <link href="https://docs.flathub.org/blog/over-one-million-active-users-and-growing" rel="alternate" type="text/html"/>
    <title>Over One Million Active Users, and Growing</title>
    <summary>Earlier this month we shared new app metadata guidelines in response to the growth and maturity of Flathub. Today we're proud to share about that growth in a bit more detail including a huge milestone, how we calculate stats, and what we believe is driving that growth.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Earlier this month we shared <a href="https://docs.flathub.org/blog/quality-moderation">new app metadata guidelines</a> in response to the growth and maturity of Flathub. Today we're proud to share about that growth in a bit more detail including a huge milestone, how we calculate stats, and what we believe is driving that growth.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="milestones">Milestones<a class="hash-link" href="https://docs.flathub.org/blog/over-one-million-active-users-and-growing#milestones" title="Direct link to Milestones">​</a></h2>
<p><img alt="Flathub: 1.6 billion downloads; 2,400+ apps; 850+ verified apps; 1 million+ active users" class="img_ev3q" height="1080" src="https://docs.flathub.org/assets/images/milestones-bbf06ea4ad300901c8f39663b7bd69ce.png" width="1920"/></p>
<p>To date, Flathub has served a total of <strong>1.6 billion downloads</strong> of <strong>over 2,400 apps</strong> and their updates.</p>
<p>Since introducing <a href="https://docs.flathub.org/docs/for-users/verification">verified apps</a> last year, <strong>over 850 apps have been verified</strong> by their original authors; more than one third of all apps, with that number constantly increasing.</p>
<p>And finally, we're thrilled to announce that Flathub has surpassed <strong>one million active users</strong>. 🎉️</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-we-measure-growth">How We Measure Growth<a class="hash-link" href="https://docs.flathub.org/blog/over-one-million-active-users-and-growing#how-we-measure-growth" title="Direct link to How We Measure Growth">​</a></h2>
<p>We have a <a href="https://flathub.org/statistics" rel="noopener noreferrer" target="_blank">public dashboard</a> that shares some basic statistics, powered by an <a href="https://github.com/flathub-infra/flathub-stats" rel="noopener noreferrer" target="_blank">open source script</a>. We don't track individual metrics from end user machines; instead, we look at downloads of specific artifacts from the Flathub infrastructure itself. This gives us a count of installs and updates over time, downloads per country (based on the origin of requests), and some derivative data like downloads of apps in different categories.</p>
<p>But how can we measure how many <em>active users</em> we have?</p>
<p>Since Flathub necessarily serves downloads of Flatpak <em>runtimes</em> (common platforms on which apps are built), we can estimate active users fairly well. For example, when installing or updating many apps, Flatpak will automatically install the base <a href="https://freedesktop-sdk.gitlab.io/" rel="noopener noreferrer" target="_blank">FreeDesktop SDK</a> runtime on which the KDE and GNOME runtimes (and most other apps) are built. We can look at the number of downloads of <em>updates</em> to a recent release of this runtime to estimate how many active installs are out there getting Flatpaks from Flathub.</p>
<p>This methodology reveals that over the past few months there have been over a million updates of each of the latest FreeDesktop SDK runtime releases, meaning we've passed the one million active user mark.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 16"><path d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z" fill-rule="evenodd"/></svg></span>note</div><div class="admonitionContent_BuS1"><p>If anything, we believe this to be a conservative estimate as some users may be using apps that do not use the specific runtime measured.</p></div></div>
<p>If you'd like to explore more of this data yourself, there's this <a href="https://klausenbusk.github.io/flathub-stats/#ref=org.freedesktop.Platform/23.08&amp;interval=infinity&amp;downloadType=updates" rel="noopener noreferrer" target="_blank">handy dashboard by Kristian Klausen</a> (<a href="https://github.com/klausenbusk/flathub-stats" rel="noopener noreferrer" target="_blank">source</a>), or you can always chat with us in <a href="https://matrix.to/#/#flathub:matrix.org" rel="noopener noreferrer" target="_blank">#flathub on Matrix</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-driving-growth">What's Driving Growth<a class="hash-link" href="https://docs.flathub.org/blog/over-one-million-active-users-and-growing#whats-driving-growth" title="Direct link to What's Driving Growth">​</a></h2>
<p>We attribute the growth of Flathub to a few developments over the years, and especially the last several months:</p>
<ol>
<li>
<p><strong>Popular app availability</strong>: Since we started Flathub, we've seen apps like <a href="https://flathub.org/apps/org.mozilla.firefox" rel="noopener noreferrer" target="_blank">Firefox</a>, <a href="https://flathub.org/apps/com.google.Chrome" rel="noopener noreferrer" target="_blank">Google Chrome</a>, <a href="https://flathub.org/apps/com.discordapp.Discord" rel="noopener noreferrer" target="_blank">Discord</a>, <a href="https://flathub.org/apps/org.videolan.VLC" rel="noopener noreferrer" target="_blank">VLC</a>, <a href="https://flathub.org/apps/com.spotify.Client" rel="noopener noreferrer" target="_blank">Spotify</a>, <a href="https://flathub.org/apps/org.telegram.desktop" rel="noopener noreferrer" target="_blank">Telegram</a>, <a href="https://flathub.org/apps/com.microsoft.Edge" rel="noopener noreferrer" target="_blank">Microsoft Edge</a>, <a href="https://flathub.org/apps/com.valvesoftware.Steam" rel="noopener noreferrer" target="_blank">Steam</a>, <a href="https://flathub.org/apps/com.obsproject.Studio" rel="noopener noreferrer" target="_blank">OBS Studio</a>, <a href="https://flathub.org/apps/us.zoom.Zoom" rel="noopener noreferrer" target="_blank">Zoom</a>, <a href="https://flathub.org/apps/org.mozilla.Thunderbird" rel="noopener noreferrer" target="_blank">Thunderbird</a>, and <em>many</em> more make their way into the store. These are many of the apps people want and expect, especially if they're coming to a Linux desktop for the first time. Each time another popular app hits Flathub, it makes both Flathub and Linux that much more compelling to users.</p>
</li>
<li>
<p><strong>Verified apps</strong>: We've heard that some folks have held off installing specific apps or even using Flathub altogether because they didn't want a third-party maintainer redistributing an app they rely on; <a href="https://docs.flathub.org/docs/for-users/verification/">verifying apps</a> solves this by assuring users their favorite app is actually coming from its developer. With an ever-increasing number of <a href="https://flathub.org/apps/collection/verified" rel="noopener noreferrer" target="_blank">apps choosing to get verified</a>—including both big names and many newer indie apps—the trust and adoption of Flathub increases.</p>
</li>
<li>
<p><strong>Steam Deck</strong>: It's not <a href="https://mastodon.blaede.family/@cassidy/111031129234702967" rel="noopener noreferrer" target="_blank">just a meme</a>; we suspect Flathub being included as the default app source for the Steam Deck's desktop mode has had a large positive effect on the usage of Flathub. Just look at some of the <a href="https://flathub.org/apps/collection/popular" rel="noopener noreferrer" target="_blank">most popular apps</a>: retro game emulators, game compatibility tools, gaming-oriented chat services, alternate game launchers—all the kinds of apps you'd expect Steam Deck users to want. And in fact, "game" is the single most common category of app on Flathub. It turns out selling <a href="https://www.theverge.com/2023/11/9/23954205/valve-steam-deck-multiple-millions" rel="noopener noreferrer" target="_blank">"multiple millions" of devices</a> has an impact on the ecosystem!</p>
</li>
<li>
<p><strong>Linux distro adoption</strong>: In addition to shipping on Steam Deck, Flathub now comes included out of the box on at least Clear Linux, Endless OS, KDE Neon, Linux Mint, Pop!_OS, and Zorin OS—and <a href="https://pagure.io/fesco/issue/2939" rel="noopener noreferrer" target="_blank">as of Fedora 38</a>, Flathub is available in its entirety when enabling third-party software sources. <strong>Flathub is the preferred app store for Linux, and its grassroots adoption across the Linux desktop ecosystem proves that.</strong></p>
</li>
<li>
<p><strong>New apps</strong>: Last but definitely not least, we've entered a thrilling chapter of Flathub as an ecosystem. It's not just another source to get popular, big-name apps you'd expect to be able to get anywhere else; <strong>Flathub has become the preferred app store for a growing number of indie, open source developers</strong>. Developers are increasingly submitting their own new apps and directing their users to Flathub; from <a href="https://circle.gnome.org/#apps" rel="noopener noreferrer" target="_blank">all 50+ GNOME Circle apps</a> to apps like <a href="https://flathub.org/apps/org.endlessos.Key" rel="noopener noreferrer" target="_blank">Endless Key</a>, <a href="https://flathub.org/apps/com.librumreader.librum" rel="noopener noreferrer" target="_blank">Librum</a>, <a href="https://flathub.org/apps/io.github.NickKarpowicz.LightwaveExplorer" rel="noopener noreferrer" target="_blank">Lightwave Explorer</a>, <a href="https://flathub.org/apps/net.sapples.LiveCaptions" rel="noopener noreferrer" target="_blank">Live Captions</a>, and <a href="https://flathub.org/apps/io.github.alainm23.planify" rel="noopener noreferrer" target="_blank">Planify</a>, Flathub is the best way to get apps into the hands of Linux users.</p>
</li>
</ol>
<p>And of course a large part of Flathub's continued growth has been due to the incredible work of the Flathub admins, contributors, and volunteers who have helped ensure Flathub remains the trustworthy and reliable service it has always been known as.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="heres-to-whats-next">Here's to What's Next!<a class="hash-link" href="https://docs.flathub.org/blog/over-one-million-active-users-and-growing#heres-to-whats-next" title="Direct link to Here's to What's Next!">​</a></h2>
<p>It's easy to pat ourselves on the back for these milestones (and it's well deserved!), but equally important is to look forward. Over the coming months we're excited to continue tackling <a href="https://discourse.flathub.org/t/flathub-in-2023/3808#whats-next-8" rel="noopener noreferrer" target="_blank">the roadmap we laid out last year</a>, including continued work towards payments and the new organizational structure for Flathub.</p>
<p>We're also increasing our engagement with third-party developers and ISVs to share why they should bring their apps to the million-plus Flathub users on Linux, continuing to improve documentation, and working towards <a href="https://docs.flathub.org/blog/quality-moderation#curation">curation and improved presentation of apps</a>. There's a lot more coming and always more to do; if you want to get involved, chat with us in <a href="https://matrix.to/#/#flathub:matrix.org" rel="noopener noreferrer" target="_blank">#flathub on Matrix</a>.</p>
<p>Thank you for reading, and happy downloading!</p></div>
    </content>
    <updated>2024-01-26T00:00:00Z</updated>
    <published>2024-01-26T00:00:00Z</published>
    <category term="flathub"/>
    <category term="milestone"/>
    <category term="stats"/>
    <source>
      <id>https://docs.flathub.org/blog</id>
      <author>
        <name>Flathub Blog</name>
      </author>
      <link href="https://docs.flathub.org/blog" rel="alternate" type="text/html"/>
      <link href="https://docs.flathub.org/blog/rss.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Flathub Documentation Blog</subtitle>
      <title>Flathub Documentation Blog</title>
      <updated>2024-01-31T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://feborg.es/?p=10378</id>
    <link href="https://feborg.es/gnome-is-participating-in-outreachy-2024/" rel="alternate" type="text/html"/>
    <title>GNOME is participating in Outreachy! (May to August 2024)</title>
    <summary>The Outreachy organizers have approved GNOME to participate in the current round of Outreachy! The GNOME Foundation is interested in sponsoring 3 internship projects for the May to August cohort. @mentors If you are interested in mentoring, please discuss project ideas in our Project Ideas repository. Feb. 23, 2024 is the deadline for mentors to […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The Outreachy organizers have approved GNOME to participate in the current round of Outreachy!</p>
<p>The GNOME Foundation is interested in sponsoring 3 internship projects for the May to August cohort.</p>
<p>@<strong>mentors</strong> If you are interested in mentoring, please discuss project ideas in our <a href="https://gitlab.gnome.org/Teams/Engagement/internship-project-ideas/-/issues">Project Ideas repository.</a></p>
<ul>
<li><strong>Feb. 23, 2024 is the deadline for mentors to submit new projects.</strong></li>
</ul>
<p>@<strong>interns</strong> Initial applications for the Outreachy May 2024 to Aug 2024 internships are due on Jan 29 at 4pm UTC: <a href="https://www.outreachy.org/apply/">https://www.outreachy.org/apply/</a></p></div>
    </content>
    <updated>2024-01-24T12:52:47Z</updated>
    <published>2024-01-24T12:52:47Z</published>
    <category term="gnome"/>
    <category term="internships"/>
    <category term="outreachy"/>
    <author>
      <name>Felipe Borges</name>
    </author>
    <source>
      <id>https://feborg.es</id>
      <logo>https://feborg.es/files/2023/12/cropped-avatar-32x32.jpg</logo>
      <link href="https://feborg.es/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://feborg.es" rel="alternate" type="text/html"/>
      <subtitle>Felipe Borges' blog about GNOME</subtitle>
      <title>Felipe Borges</title>
      <updated>2024-01-25T09:42:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://lu.is/?p=4569</id>
    <link href="https://lu.is/2024/01/after-twitter/" rel="alternate" type="text/html"/>
    <title>After Twitter</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The number of self-identified thoughtful-people-in-tech whose social media energy still goes primarily to Twitter doesn’t bode well for, well, anything. I’m genuinely not judgy of people whose thing is Just Being Online, but if part of the self-image you like to project is “oh, yes, I really dislike fascism and care about other people” then… yeah,… <a class="more-link" href="https://lu.is/2024/01/after-twitter/">Continue reading <span class="screen-reader-text">After Twitter</span> <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The number of self-identified thoughtful-people-in-tech whose social media energy still goes primarily to Twitter doesn’t bode well for, well, anything. I’m genuinely not judgy of people whose thing is Just Being Online, but if part of the self-image you like to project is “oh, yes, I really dislike fascism and care about other people” then… yeah, I’m judging you for still being active on Twitter.</p>



<p>A few tips that have helped me move to the fediverse:</p>



<ul>
<li>If you were very dependent on your X following and don’t want to abandon that, that’s understandable. If so, follow <a href="https://www.xlast.org/">the Xlast strategy</a>: yes, continue to post on Twitter when that’s important for work, but do it a bit slowly and less interactively.</li>



<li>Don’t treat Fedi like late-period twitter, when you were picky about who you followed and humble about who you interacted with. Treat it like early-period twitter, when we all followed quite a few randos, and said things like “hi” and “thanks for sharing that!” It’s a small town, not the big city.</li>



<li>Filter aggressively: Mastodon has <a href="https://docs.joinmastodon.org/user/moderating/">great filtering capabilities</a>, which makes following a lot of people easier. And also makes my <a href="https://lu.is/blog/2020/02/25/surviving-twitter/">2020 advice on social media in an election year</a> very relevant.</li>



<li>If at all possible, find a server that’s specific to your place (like <a href="https://sfba.social/">sfba.social</a> or <a href="https://cosocial.ca/">cosocial.ca</a>) or your interests (like <a href="https://hci.social/">hci.social</a>). The server functionality isn’t <em>great</em> (it is telling that the default UX calls it a server and not a community) but it can help you get your footing.</li>



<li>Use an alternate client. <a href="https://phanpy.social/">Phanpy.social</a> is genuinely excellent, with the one exception that it doesn’t do RTs. If you need RTs and can’t be bothered to copy-paste, Mona is very nice.</li>



<li>I’m also on Bluesky but (perhaps because of which of my follows migrated there instead of Fediverse) it has trended hyper-US-political, which I have not enjoyed.</li>
</ul>



<p>If you want a better world, you can’t wait for others to build it for you. To borrow a favorite “urgent optimist” phrase, you’re <a href="https://en.wikiquote.org/wiki/Alasdair_Gray#Unlikely_Stories,_Mostly_(1983)">working in the early days of a better nation</a>. Or, if you prefer: <a href="https://www.theatlantic.com/daily-dish/archive/2008/02/-we-are-the-ones-weve-been-waiting-for/219588/?gift=eSoFN3fL9EbdCEYsjIq-DU1YYIQDFlFkPras4U5HXX8&amp;utm_source=copy-link&amp;utm_medium=social&amp;utm_campaign=share">you are the one you’ve been waiting for</a>. That’s not necessarily easy, but I at least am having quite a bit of fun on the Fediverse. Come on in, the water is fine!</p></div>
    </content>
    <updated>2024-01-24T05:38:53Z</updated>
    <published>2024-01-24T05:38:53Z</published>
    <category term="misc."/>
    <author>
      <name>Luis Villa</name>
    </author>
    <source>
      <id>https://lu.is</id>
      <logo>https://s0.wp.com/i/webclip.png</logo>
      <link href="https://lu.is/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://lu.is" rel="alternate" type="text/html"/>
      <subtitle>Software, law, and the spaces in between.</subtitle>
      <title>Luis Villa: Open Tech and Policy</title>
      <updated>2024-01-24T05:38:53Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/rbultje/?p=7213</id>
    <link href="https://blogs.gnome.org/rbultje/2024/01/22/taxes-and-section-174/" rel="alternate" type="text/html"/>
    <title>Taxes and section 174</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">7 years since my last post (2017!), so many exciting things to talk about: the AV1 video codec was released, we at Two Orioles wrote an AV1 encoder (Eve) and decoder (dav1d). Covid happened. I became a US citizen. Happily … <a href="https://blogs.gnome.org/rbultje/2024/01/22/taxes-and-section-174/">Continue reading <span class="meta-nav">→</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>7 years since my <a href="https://blogs.gnome.org/rbultje/2017/07/14/writing-x86-simd-using-x86inc-asm/">last</a> post (2017!), so many exciting things to talk about: the <a href="https://en.wikipedia.org/wiki/AV1">AV1</a> video codec was released, <a href="https://www.twoorioles.com/">we</a> at Two Orioles wrote an AV1 encoder (<a href="https://www.twoorioles.com/eve-av1">Eve</a>) and decoder (<a href="https://code.videolan.org/videolan/dav1d">dav1d</a>). Covid happened. I became a US citizen. Happily married for 15 years. My two boys are now teenagers (and behaving like it). So, let’s talk about … taxes?</p>
<p>In 2017, Congress enacted the <a href="https://en.wikipedia.org/wiki/Tax_Cuts_and_Jobs_Act">Tax Cuts and Jobs Act</a>, which (very briefly) reduces business (permanent) and personal (expires after 2025) tax rates by a few percent points, along with some “magic” to pay for it; some might remember the changes to <a href="https://en.wikipedia.org/wiki/State_and_local_tax_deduction">SALT</a> deductions. In 2023, during tax filing for 2022, more of that magic <a href="https://news.ycombinator.com/item?id=34627712">became clear</a>: the 2017 law included 5-year-deferred changes to section-174, which covers expenses related to “Research &amp; Experimentation” (R&amp;E). The change requires <em>all</em> R&amp;E expenses to be amortized over 5 (domestic) or 15 (foreign) years, and explicitly adds software development as a section-174 expense for tax purposes. This might sound innocent, but it hits small businesses hard.</p>
<p>Imagine a small software development business with <a href="https://youtu.be/EJR1H5tf5wE?t=15">$1M</a> in revenue. It might employ 5 software developers ($150k/yr each – all at 50% effective tax rate in NY) plus legal/accounting/bookkeeping ($25k/yr) and office expenses ($25k/yr), leaving <code>$1M - 5x $150k - $25k - $25k = $200k</code> as business profit or taxable income. The profit flows through to the LLC/S-corp owners, who pay 50% tax over that also. Total taxes (federal + state + local) paid: <code>50% * (5x $150k + $200k) = $475k</code>.</p>
<p>Starting 2022, initial-midyear amortizations means it can deduct only 10% of its R&amp;E expenses (including salaries and office), which means the effective taxable income flowing through to the LLC/S-corp owners is now <code>$1M - 10% * (5x $150k + $25k) - $25k = $897.5k</code>, taxed at 50%, resulting in total taxes increasing to <code>50% * (5x $150k + 897.5k) = $823.75k</code>. Of course, this money doesn’t actually exist, so the business will go broke unless it lays off some of its employees or the owners take out loans (bonus points for today’s high interest rates). This supposedly slowly resolves itself after 5 years, as long as the business doesn’t grow (i.e. hire new employees) and salaries of existing employees don’t go up: a pretty crazy economic policy to encourage innovation. It’s worse if you hire people outside the US, because now the amortization period is 15 years.</p>
<p>Congress should fix this, and there has been some (late, slow) <a href="https://gop-waysandmeans.house.gov/wp-content/uploads/2024/01/BILLS-118hr7024ih.pdf">progress</a> in this area. Unfortunately, the media hasn’t caught on. The <a href="https://www.nytimes.com/2024/01/19/us/politics/congress-election-year-tax-deal.html">NYT</a> blasted the proposed legislation as a “corporate giveaway” that “would benefit profitable companies” who “already pay too little in taxes”. The <a href="https://www.wsj.com/articles/congress-child-tax-credit-business-tax-breaks-republicans-democrats-ce733e80">WSJ</a> called it “at best a modest boost to investment incentives”. Maybe these journalists should read Michele Hansen’s <a href="https://twitter.com/mjwhansen/status/1748345492998696961">tweet</a>, which lists individual stories from small businesses (like <a href="https://www.twoorioles.com/">mine</a>) who were hurt by this change in tax law: <a href="https://twitter.com/mjwhansen/status/1748354146544099653">tax increases by 500%</a>, <a href="https://twitter.com/mjwhansen/status/1748348344252899713">effective tax rates of 500%</a>, <a href="https://twitter.com/mjwhansen/status/1748356698018881549">hiring freezes</a>, <a href="https://twitter.com/mjwhansen/status/1748352378691043581">layoffs</a>, <a href="https://twitter.com/mjwhansen/status/1748352220737794391">loans</a>, <a href="https://twitter.com/mjwhansen/status/1748357312480161841">debt</a> – and speaking from personal experience: lots of tears.</p>
<p>Dear Congress: small businesses need you – please fix section 174.</p></div>
    </content>
    <updated>2024-01-22T15:46:40Z</updated>
    <published>2024-01-22T15:46:40Z</published>
    <category term="General"/>
    <author>
      <name>rbultje</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/rbultje</id>
      <link href="https://blogs.gnome.org/rbultje/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/rbultje" rel="alternate" type="text/html"/>
      <subtitle>Random thoughts</subtitle>
      <title>Ronald S. Bultje</title>
      <updated>2024-01-22T15:46:40Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5968355124473522212.post-4477966392693123855</id>
    <link href="https://nibblestew.blogspot.com/feeds/4477966392693123855/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="https://nibblestew.blogspot.com/2024/01/capypdf-080-released.html#comment-form" rel="replies" title="0 Comments" type="text/html"/>
    <link href="https://www.blogger.com/feeds/5968355124473522212/posts/default/4477966392693123855" rel="edit" type="application/atom+xml"/>
    <link href="https://www.blogger.com/feeds/5968355124473522212/posts/default/4477966392693123855" rel="self" type="application/atom+xml"/>
    <link href="https://nibblestew.blogspot.com/2024/01/capypdf-080-released.html" rel="alternate" title="CapyPDF 0.8.0 released" type="text/html"/>
    <title>CapyPDF 0.8.0 released</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Version 0.8.0 of the <a href="https://github.com/jpakkane/capypdf/">CapyPDF</a> library has been <a href="https://github.com/jpakkane/capypdf/releases/tag/0.8.0">released</a>. The main new feature is support for form XObjects and printer's mark annotations.</p><p>Printer's marks are things like color bars, <a href="https://en.wikipedia.org/wiki/Printing#Crop_marks">crop marks</a> and <a href="https://en.wikipedia.org/wiki/Registration_black">registration marks</a> (also known as "bullseye marks") that high end printers need for quality control. Here is a very simple document.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSIybGlIF7HJ_1XOsXFk3__98uLqhdh45_im9MEokuv6b6ZIOGity_jm1FsigNnAzarEa33ptjXee-rx0zO_jMicou-qZtLxOa0z3dWcmtUT0Y6QNY5VgopvNvCauRyceT8CRrBxKjMBenFCe-bXvG-RXMCRnWYlbzMhXjJE7Jj1JhCeI-Z6S1qww0nh0/s487/printersmark.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSIybGlIF7HJ_1XOsXFk3__98uLqhdh45_im9MEokuv6b6ZIOGity_jm1FsigNnAzarEa33ptjXee-rx0zO_jMicou-qZtLxOa0z3dWcmtUT0Y6QNY5VgopvNvCauRyceT8CRrBxKjMBenFCe-bXvG-RXMCRnWYlbzMhXjJE7Jj1JhCeI-Z6S1qww0nh0/s320/printersmark.png" width="315"/></a></div><p>An experienced print operator would use the black lines to set up paper trimming. Traditionally these marks were drawn in the page's graphics stream. This is problematic because nowadays printers prefer to use their own custom marks instead of ones created by the document author. PDF solves this issue by moving these graphics operations to separate draw contexts (specifically "form XObjects", which are not actually forms, though they are XObjects) that can then be "glued" on top of the page. These annotations are shown in PDF viewer applications but they are not printed. I have no experience with high end RIP software, but presumably the operator can choose to either print the document's annotations or replace them with their custom QA marks.</p><p>As usual, to find out what features CapyPDF has and how to use them, look up either <a href="https://github.com/jpakkane/capypdf/blob/master/include/capypdf.h.in">the public C header</a> or the <a href="https://github.com/jpakkane/capypdf/blob/master/test/capypdftests.py">Python code used in unit tests</a>.</p></div>
    </content>
    <updated>2024-01-21T12:31:00Z</updated>
    <published>2024-01-21T12:31:00Z</published>
    <author>
      <name>Jussi</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/03370287682352908292</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5968355124473522212</id>
      <author>
        <name>Jussi</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/03370287682352908292</uri>
      </author>
      <link href="https://nibblestew.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="https://www.blogger.com/feeds/5968355124473522212/posts/default" rel="self" type="application/atom+xml"/>
      <link href="https://nibblestew.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="https://www.blogger.com/feeds/5968355124473522212/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <subtitle>A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com</subtitle>
      <title>Nibble Stew</title>
      <updated>2024-02-09T02:12:10Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://feaneron.com/?p=10046</id>
    <link href="https://feaneron.com/2024/01/20/fundraiser-goal-reached/" rel="alternate" type="text/html"/>
    <title>Fundraiser goal reached!</title>
    <summary>Following my announcement a few days ago, in probably what has been record time, the Ko-Fi goal for the Elgato Stream Deck+ has been reached! I’ve acquired the device and it’s already on its way, expected to reach me by the end of January ~ early February due to being an international purchase. Thanks everyone […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Following my <a href="https://feaneron.com/2024/01/15/mini-fundraiser-stream-deck-plus/">announcement</a> a few days ago, in probably what has been record time, the <a href="https://ko-fi.com/feaneron/goal?g=102">Ko-Fi goal for the Elgato Stream Deck+</a> has been reached!</p>



<p>I’ve acquired the device and it’s already on its way, expected to reach me by the end of January ~ early February due to being an international purchase.</p>



<p>Thanks everyone for your your overwhelming support! This is really exciting.</p></div>
    </content>
    <updated>2024-01-20T23:08:05Z</updated>
    <published>2024-01-20T23:08:05Z</published>
    <category term="Uncategorized"/>
    <author>
      <name>Georges Stavracas</name>
    </author>
    <source>
      <id>https://feaneron.com</id>
      <logo>https://feaneron.com/wp-content/uploads/2014/10/jin-150x150.jpg</logo>
      <link href="https://feaneron.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://feaneron.com" rel="alternate" type="text/html"/>
      <subtitle>Scratching my own free software itches</subtitle>
      <title>feaneron</title>
      <updated>2024-01-20T23:08:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/chergert/?p=11185</id>
    <link href="https://blogs.gnome.org/chergert/2024/01/20/sidebars-in-libpanel/" rel="alternate" type="text/html"/>
    <title>Sidebars in Libpanel</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">One of the more recent design trends in GNOME has been the use of sidebars. It looks great, it’s functional, and it gives separation of content from hierarchy. Builder, on the other hand, has been stuck a bit closer to the old-hat design of IDEs where the hierarchy falls strictly from the headerbar. This is … <a class="more-link" href="https://blogs.gnome.org/chergert/2024/01/20/sidebars-in-libpanel/">Continue reading <span class="screen-reader-text">Sidebars in Libpanel</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of the more recent design trends in GNOME has been the use of sidebars. It looks great, it’s functional, and it gives separation of content from hierarchy.</p>
<p><a href="http://blogs.gnome.org/chergert/files/2024/01/sidebars.png"><img alt="A screenshot showing a number of GNOME applications which contain sidebars including Nautilus, D-Spy, Control Center, and Calendar. The image contains both light and dark variants split by a line from lower left to upper right of the image." class="aligncenter size-large wp-image-11188" height="400" src="http://blogs.gnome.org/chergert/files/2024/01/sidebars-1024x620.png" width="660"/></a></p>
<p>Builder, on the other hand, has been stuck a bit closer to the old-hat design of IDEs where the hierarchy falls strictly from the headerbar. This is simply because libpanel was designed before that design trend. Some attempt was made in Builder to make it look somewhat sidebar’ish, but that was the extent of it given available time.</p>
<p><a href="http://blogs.gnome.org/chergert/files/2024/01/Screenshot-from-2024-01-20-08-19-39.png"><img alt="A screenshot of the GNOME 45 release of Builder where the headerbar is across the top and panels, documents, and project panel below." class="aligncenter size-large wp-image-11194" height="402" src="http://blogs.gnome.org/chergert/files/2024/01/Screenshot-from-2024-01-20-08-19-39-1024x623.png" width="660"/></a></p>
<p>Last week I had a moment of inspiration on a novel way we could solve it without uprooting the applications which use libpanel. You can now insert edge widgets in <code>PanelDockChild</code> which are always visible even when the child is not. Combining that with being able to place a headerbar inside a <code>PanelDockChild</code> along with your <code>PanelFrame</code>s means you can get something that looks more familiar in modern GNOME.</p>
<p><a href="http://blogs.gnome.org/chergert/files/2024/01/Screenshot-from-2024-01-20-08-26-48.png"><img alt="A screenshot of what will become Builder for GNOME 46 which includes the common sidebar styling." class="aligncenter size-large wp-image-11203" height="396" src="http://blogs.gnome.org/chergert/files/2024/01/Screenshot-from-2024-01-20-08-26-48-1024x614.png" width="660"/></a></p>
<p>If you’d like to improve things further, you know <a href="https://gitlab.gnome.org/GNOME/gnome-builder">where to find the code</a>.</p></div>
    </content>
    <updated>2024-01-20T16:32:09Z</updated>
    <published>2024-01-20T16:32:09Z</published>
    <category term="Builder"/>
    <author>
      <name>chergert</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/chergert</id>
      <link href="https://blogs.gnome.org/chergert/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/chergert" rel="alternate" type="text/html"/>
      <subtitle>Details of Christian's work on GNOME</subtitle>
      <title>Happenings in GNOME</title>
      <updated>2024-02-02T18:58:17Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://debarshiray.wordpress.com/?p=2603</id>
    <link href="https://debarshiray.wordpress.com/2024/01/20/toolbx-now-offers-built-in-support-for-arch-linux-and-ubuntu/" rel="alternate" type="text/html"/>
    <title>Toolbx now offers built-in support for Arch Linux and Ubuntu</title>
    <summary>… and why did it take so long for that to happen? The year 2023 was a busy one in Toolbx land. We had two big releases, and one of the important things we did was to start offering built-in support for Arch Linux and Ubuntu. What does that mean? It means that if you […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><em>… and why did it take so long for that to happen?</em></p>



<p>The year 2023 was a busy one in <a href="https://containertoolbx.org/">Toolbx</a> land. We had two big <a href="https://github.com/containers/toolbox/releases">releases</a>, and one of the important things we did was to start offering built-in support for <a href="https://github.com/containers/toolbox/pull/1311">Arch Linux</a> and <a href="https://github.com/containers/toolbox/pull/483">Ubuntu</a>.</p>



<h3 class="wp-block-heading"><strong>What does that mean?</strong></h3>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p>It means that if you have the <a href="https://github.com/containers/toolbox/releases/tag/0.0.99.5">latest</a> Toolbx release, then a simple <code>toolbox create</code> on Arch Linux and Ubuntu hosts will create matching Toolbx containers, instead of a fallback Fedora container. If you are using some other host operating system, then you can get the same with:</p>
</div></div>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p/><pre class="wp-block-code"><code>$ toolbox create --distro arch<br/>$ toolbox create --distro ubuntu --release 22.04</code></pre><p/>
</div></div>
</div></div>
</div></div>



<p>It also means that <em>we will do our best to treat Arch Linux and Ubuntu on equal terms with <a href="https://fedoraproject.org/">Fedora</a> and avoid regressions</em>.</p>



<p>Now, that last sentence has a lot more to it than may seem at first. So, I am going to try to unwrap it to show why I think this one of the important things we did in 2023. You may find it interesting if you want the set of supported Linux distributions to expand further. You can also skip the details and go straight to the end to get the jist of it.</p>



<p/><figure class="wp-block-image"><img alt="" class="wp-image-2549" height="720" src="https://debarshiray.files.wordpress.com/2022/10/toolbx-distros.gif" style="border: none;" width="800"/></figure><p/>



<h3 class="wp-block-heading"><strong>Why go beyond Fedora?</strong></h3>



<p>Even though Toolbx was created for the immediate needs of <a href="https://fedoraproject.org/silverblue/">Fedora Silverblue</a>, it has long since exceeded the bounds of Fedora and <a href="https://ostreedev.github.io/ostree/">OSTree</a> based operating systems. At the same time, Toolbx only had built-in support for Fedora and Red Hat Enterprise Linux. This disconnect led to a lot of people eagerly asking for better support for Linux distributions beyond the Fedora family.</p>



<p>From the outside, it looks like just a matter of putting together a <a href="https://www.ibm.com/docs/en/cloud-paks/z-modernization-stack/2023.4?topic=artifact-oci-containerfile-specifications">Containerfile</a> that layers on some extra content on top of a base image, and then publishing it on some OCI registry somewhere. However, it’s not that simple.</p>



<h3 class="wp-block-heading"><strong>Why did it take so long?</strong></h3>



<p>Toolbx is a glue. Given an existing host operating system and a desired command line environment, it will create and set up an <a href="https://www.opencontainers.org/">OCI</a> container with the desired CLI environment that has seamless access to the user’s home directory, the Wayland and X11 sockets, networking (including Avahi), removable devices (like USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the udev database, etc..</p>



<p>The closest analogy I can think of is <a href="https://libosinfo.org/">libosinfo</a> generating scripts to perform automated installations of various operating systems as virtual machines. Except, Toolbx containers aren’t expected to be as cleanly or formally separated from the host as VMs are, and the world of OCI containers is designed for deploying server-side applications and services, not for the persistent interactive use that Toolbx offers. This means that Toolbx has to carefully make each host OS version match the container, and make the container fit for interactive use. For example, libosinfo doesn’t have to worry about making the VM’s command line shell prompt and /etc/resolv.conf work with that of the host’s, nor does it have to convert the cloud image of an OS into a variant suited for a desktop or laptop.</p>



<p>This means that Toolbx has to very carefully set up the container to work with the particular host operating system version in use. For example, there can be subtle differences between running a Fedora 39 container on a Fedora 38 host and vice versa. If there are three different Fedora versions that we care about (such as Fedoras 38, 39 and 40), then that’s nine different combinations of container and host OSes to support. Sometimes, the number of relevant versions goes from three to four, and the number of combinations jumps to sixteen. Now, add Red Hat Enterprise Linux to the mix. Assuming that we only care about the latest point-releases (such as RHELs 8.9 and 9.3), we are now looking at twenty-five to thirty-six combinations. In reality, it’s a lot more, because we care about more than just the latest RHEL point-releases.</p>



<p>You can see where this is going.</p>



<p>With this addition of Arch Linux and Ubuntu, we have added at least seven new versions that we care about. That’s a total of approximately one hundred and fifty combinations!</p>



<p>I can assure you that this isn’t a theoretical concern. Here’s a <a href="https://github.com/containers/toolbox/issues/1410">bug</a> about domain name resolution being completely broken in Toolbx containers for Fedoras 39 and 40 on Red Hat Enterprise Linux 9 hosts.</p>



<h3 class="wp-block-heading"><strong>Tests</strong></h3>



<p>So, to promise with a straight face that <em>we will do our best to treat Arch Linux and Ubuntu on equal terms with Fedora and avoid regressions</em>, we need to automate this. There’s no way a test matrix of this size can be tackled manually. Hence, tests.</p>



<p>However, it’s easier said than done, because it’s not just about having the tests. We also need to run them on as many different host operating system versions as possible. Unfortunately, most continuous integration systems out there either only offer containers, which are useless because Toolbx needs to be tested on the host OS, or they offer Ubuntu hosts. One exception is <a href="https://softwarefactory-project.io/">Software Factory</a>, which runs an instance of <a href="https://zuul-ci.org/">Zuul CI</a>, and offers Fedora and <a href="https://www.centos.org/centos-stream/">CentOS Stream</a> hosts.</p>



<p>Currently, we have a test suite with more than three hundred tests that covers a good chunk of all supported OCI containers and images. All these tests are run separately on hosts representing all active Fedora versions, with subsets being run on CentOS Stream 9 and Ubuntu 22.04 hosts. We are working on ensuring that the entire test suite gets run on CentOS Stream 9 and Ubuntu 22.04, and are hoping to introduce CentOS Stream 8 and Ubuntu 24.04 hosts to the mix.</p>



<p>Plus, these aren’t just simple smoke tests. They don’t just create and start the containers, and check for a successful exit code. They comprehensively poke at various attributes of the containers’ runtime environment and error conditions to ensure that things really do work as advertised.</p>



<p>I think this is a pretty impressive set-up. It took time to build it, and it’s still not done, but I think it was worth it.</p>



<p><em>We have also been <a href="https://fedoraproject.org/wiki/Changes/ToolbxReleaseBlocker">busy</a> in Fedora, pushing the quality of the Toolbx stack up a notch, but that’s a topic for another post.</em></p>



<p>So, if you want to see built-in support for your favourite Linux distribution, then please help us by providing some test runners. Right now we could really use one for Arch Linux to maintain our existing support for it, and one for <a href="https://www.debian.org/">Debian</a> because we want to include it in the near future.</p>



<h3 class="wp-block-heading"><strong>Maintainers</strong></h3>



<p>Finally, since Toolbx is a glue, sometimes we need to drive changes into the Linux distributions that we claim to support. For example, changing the sysctl(8) <a href="https://fedoraproject.org/wiki/Changes/EnableSysctlPingGroupRange">configuration</a> to make ping(8) work, fixes to the <a href="https://pagure.io/setup/pull-request/23">start-up</a> <a href="https://pagure.io/setup/pull-request/37">scripts</a> for <a href="https://pagure.io/setup/pull-request/48">Bash</a> and <a href="https://src.fedoraproject.org/rpms/zsh/pull-request/5">Z shell</a>, etc.. This means that we need <a href="https://github.com/containers/toolbox/blob/main/.github/CODEOWNERS">maintainers</a> who will own the work that’s specific to a particular Linux distribution. As a Fedora contributor, I can take care of Fedora, but I cannot sign up to take care of every single distribution that’s out there.</p>



<p>In that sense, I am delighted that we have a bunch of dedicated folks taking care of the Arch Linux and Ubuntu support. Namely, <a href="https://linderud.dev/">Morten Linderud</a> for Arch Linux, and <a href="https://shadura.me/">Andrej Shadura</a> and <a href="https://github.com/jmennius">Ievgen Popovych</a> for Ubuntu.</p>



<h3 class="wp-block-heading"><strong>Conclusion</strong></h3>



<p>Two things need to happen for us to add built-in support for a new Linux distribution.</p>



<p>First, we need test runners that let us run our upstream test suite on the host operating system, and not inside a container. Right now we could really use one for Arch Linux to maintain our existing support for it, and one for Debian because we want to include it in the near future.</p>



<p>Second, we need someone to step up to drive changes into the Linux distribution in question, and own the work that’s specific to it.</p>



<p><em>I am also going to add this to the Toolbx documentation, so that it’s easy to find in future.</em></p></div>
    </content>
    <updated>2024-01-20T02:28:22Z</updated>
    <published>2024-01-20T02:28:22Z</published>
    <category term="Arch Linux"/>
    <category term="Buildah"/>
    <category term="Containers"/>
    <category term="CoreOS"/>
    <category term="Debian"/>
    <category term="Fedora"/>
    <category term="OSTree"/>
    <category term="Podman"/>
    <category term="Red Hat Enterprise Linux"/>
    <category term="Silverblue"/>
    <category term="Toolbox"/>
    <category term="Toolbx"/>
    <category term="Ubuntu"/>
    <author>
      <name>Debarshi Ray</name>
    </author>
    <source>
      <id>https://debarshiray.wordpress.com</id>
      <logo>https://s0.wp.com/i/buttonw-com.png</logo>
      <link href="https://debarshiray.wordpress.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://debarshiray.wordpress.com" rel="alternate" type="text/html"/>
      <link href="https://debarshiray.wordpress.com/osd.xml" rel="search" title="Debarshi's den" type="application/opensearchdescription+xml"/>
      <link href="https://debarshiray.wordpress.com/?pushpress=hub" rel="hub" type="text/html"/>
      <title>Debarshi's den</title>
      <updated>2024-01-20T02:35:32Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://wingolog.org/2024/01/18/nombrilliant-actually</id>
    <link href="https://wingolog.org/archives/2024/01/18/nombrilliant-actually" rel="alternate" type="text/html"/>
    <title>nombrilliant, actually</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div><p>Today, a middle-aged note: when you are young, unless you been
failed by The System, you enjoy a radiant confidence: everything you say
burns with rightness and righteousness, that the world Actually Is This
Way, You See, and if you think about it, it Actually Should Be This
Other Specific Way.  This is how you get the fervent young communists
and Scala enthusiasts and ecologists and Ayn Randians.  The ideas are so
right that you become an evangelist, a
<a href="https://wingolog.org/archives/2010/03/12/with-the-prophetic-voice">prophet</a>,
a truth-speaker; a youtuber, perhaps.</p><p>Then, with luck, you meet the world: you build, you organize, you
invest, you double down.  And in that doubling, the ideas waver,
tremble, resonate, imperceptibly at first, reinforced in some ways,
impeded in others.  The world works in specific ways, too, and you don’t
really know them in the beginning: not in the bones, anyway.  The
unknowns become known, enumerate themselves, dragons everywhere; and in
the end, what can you say about them?  Do you stand in a spot that can
see anything at all?  Report, observe, yes; analyze, maybe, eventually;
prophesize, never.  Not any more.</p><p>And then, years later, you are still here.  The things you see, the
things you know, other people don’t: they can’t.  They weren’t here.
They aren’t here.  They hear (and retell) stories, back-stories,
back-back-stories, a whole cinematic universe of narrative, and you know
that it’s powerful and generative and yet unhinged, essentially unmoored
and distinct from reality, right and even righteous in some ways, but
wrong in others.  This happen in all domains: macroeconomics, programming
languages, landscape design, whatever.  But <i>you</i> see.  You see through stories, their construction and relation to the past, on a meta level, in a way
that was not apparent when you were young.</p><p>I tell this story (everything is story) as an inexorable progression, a
Hegelian triptych of thesis-antithesis-synthesis; a conceit.  But there are structures that can to get you to synthesis more efficiently.
PhD programs try: they break you down to allow you to build.  They do it
too quickly, perhaps; you probably have to do it again in your next
phase, academia or industry, though I imagine it’s easier the second
time around.  Some corporate hierarchies also manage to do this, in
which when you become Staff Engineer, you become the prophet.</p><p>Of course, synthesis is not inexorable; you can stop turning
the crank anywhere.   Perhaps you never move from ideal to real.
Perhaps, unmoored, you drift, painter rippling the waters.  But what do
you do when the crank comes around?  Where to next?</p><p>Anyway, all this is to say that I have lately been backing away from
bashfulness in a professional context: there are some perspectives that
I see that can’t be seen or expressed by others.  It feel very strange
to write it, but I am even trying to avoid self-deprecation and hedging;
true, I might not possess the authoritative truth on, I don’t know,
WebAssembly, or Scheme language development, but nobody else does
either, and I might as well just say what I think as if it’s true.</p><p>* * *</p><p>Getting old is not so bad.  You say very cheesy things, you feel cheesy,
but it is a kind of new youth too, reclaiming a birthday-right of being
earnest.  I am doubling down on Dad energy.  (Yes, there is a similar
kind of known-tenuous confidence necessary to raise kids.  I probably
would have forced into this position earlier if I had kids younger.  But, I don’t mean to take the metaphor fa(r)ther; responsible
community care for the young is by far not the sole province of the
family man.)</p><p>So, for the near future, I embrace the cheese.  And then, where to?  I
suspect excessive smarm.  But if I manage to succeed in avoiding that, I
look forward to writing about ignorance in another 5 years.  Until then,
happy hacking to all, and thank you for your forbearance!</p></div></div>
    </content>
    <updated>2024-01-18T23:15:58Z</updated>
    <published>2024-01-18T23:15:58Z</published>
    <author>
      <name>Andy Wingo</name>
      <uri>https://wingolog.org/</uri>
    </author>
    <source>
      <id>https://wingolog.org/feed/atom</id>
      <link href="https://wingolog.org/" rel="alternate" type="text/html"/>
      <link href="https://wingolog.org/feed/atom" rel="self" type="application/atom+xml"/>
      <subtitle>A mostly dorky weblog by Andy Wingo</subtitle>
      <title>wingolog</title>
      <updated>2024-01-18T23:15:58Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://hpjansson.org/blag/?p=1288</id>
    <link href="https://hpjansson.org/blag/2024/01/18/chafa-1-14-all-singing-all-dancing/" rel="alternate" type="text/html"/>
    <title>Chafa 1.14: All-singing, all-dancing</title>
    <summary>Dear friends, comrades, partners in crime and moderate profit! I am pleased to announce the immediate availability of Chafa 1.14.0.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Dear friends, comrades, partners in crime and moderate profit! I am pleased to announce the immediate availability of <a href="https://hpjansson.org/chafa/">Chafa</a> 1.14.0. There are <a href="https://github.com/hpjansson/chafa/releases/tag/1.14.0">release notes</a>, but who's got time for that? All the fun stuff is in this post. You should be reading it instead.</p>



<h2 class="wp-block-heading">Pixel perfection</h2>



<p>Images can now be padded instead of stretched to fit their cell extent exactly –</p>



<figure class="wp-block-image size-full"><img alt="" class="wp-image-1316" height="640" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/yehat-view.webp" width="1224"/><figcaption class="wp-element-caption"><a href="https://wiki.uqm.stack.nl/Yehat">Yehat</a> terminal no longer blurry</figcaption></figure>



<p>– so I'll no longer have to explain why our 50kLOC monstrosity couldn't do pixel-perfect output, while <a href="https://gist.github.com/hackerb9/a96cea91e6122d09a6c97f5eb797d5fa">sixcat</a> (300LOC) did so effortlessly. Naturally, I had to make this as hard as possible for myself by splicing in padding before and after each row as they're processed for channel reordering and such, but on the plus side, this maximizes cache friendliness and parallelism behind a nice and homogeneous internal API.</p>



<p>You can get the old behavior back with <code>--exact-size off</code>. It defaults to <code>auto</code>, which will do the right thing (i.e. pad if image fits in viewport without scaling and scaling wasn't explicitly requested).</p>



<p>Another improvement in this vein is that sRGB is <a href="http://www.ericbrasseur.org/gamma.html">properly linearized</a> in scaling operations now. This is pipelined along with everything else, and should be suitably fast.</p>



<h2 class="wp-block-heading">Multiplexer passthrough</h2>



<p>Previously, it was impossible to do better than character art inside multiplexers like tmux and GNU Screen. This is no longer the case; kitty has a new trick that allows for persistent raster image placement in these, which we implement. The above mentioned multiplexers have slight differences in their passthrough protocols; we support both with the new <code>--passthrough</code> argument.</p>



<p>We also support sixel passthrough. Sixels will be wrecked by multiplexer updates, so this is off by default. You can enable it with e.g. <code>-f sixel --passthrough screen</code>. tmux tends to dispose of the image immediately after we exit, so it may be a good idea to use <code>--passthrough tmux -d 5</code> there so you get a chance to look at it first.</p>



<p>To my knowledge, Chafa is the only terminal graphics toolkit to offer passthrough for all four combinations of sixel/kitty and tmux/screen. I think the iTerm2 protocol would be doable too, <a href="https://github.com/hpjansson/chafa/issues/166">if only</a>.</p>



<h2 class="wp-block-heading">MS Windows compatibility</h2>



<p>It runs pretty well on Windows. You can use it in PowerShell. <a href="https://github.com/oshaboy/">@oshaboy</a> added support for ConHost, so it can technically be used on very old Windows versions – although this hasn't gotten much testing yet.</p>



<h2 class="wp-block-heading">Python bindings</h2>



<figure class="wp-block-image size-full"><a href="https://chafapy.mage.black/"><img alt="" class="wp-image-1307" height="1134" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/chafapy-snake.png" width="1224"/></a><figcaption class="wp-element-caption">Strawberry sssnek, courtesy of Erica</figcaption></figure>



<p><a href="https://mage.black/">Erica Ferrua Edwardsdóttir</a>'s <a href="https://chafapy.mage.black/">amazing Python bindings</a> have been around for a while now, yet nary a peep from me on my blag. This shameful deficit stands in contrast to the stunning professionalism of her work. You need to do this:</p>



<pre class="wp-block-code"><code class="language-bash" lang="bash">pip install chafa.py</code></pre>



<p><a href="https://chafapy.mage.black/usage/installation.html">Do it now</a>. Everything's well structured, the <a href="https://chafapy.mage.black/">documentation</a> is entertaining and well written, and there's even a <a href="https://chafapy.mage.black/usage/tutorial.html">tutorial</a>. It's rare to see a project that simultaneously delivers and channels the spirit of F/OSS this well. You'll also find it <a href="https://github.com/GuardKenzie/chafa.py">on GitHub</a>.</p>



<h2 class="wp-block-heading">JavaScript enablement</h2>



<p><a href="https://github.com/hectorm">Héctor Molinero Fernández</a> started doing <a href="https://github.com/hectorm/chafa-wasm">WebAssembly builds</a>, which means you can now use the Chafa API from JavaScript. Like so:</p>



<pre class="wp-block-code"><code class="language-bash" lang="bash">npm install chafa-wasm</code></pre>



<p>He also made a <a href="https://hectorm.github.io/chafa-wasm/">cool web app</a> to show off all the bells and whistles!</p>



<p>Cheerleading aside, I've had no hand in either of these projects. The glory belongs to their respective maintainers, along with all of the praise, stars, code submissions <sup>and issue reports, heh heh.</sup></p>



<h2 class="wp-block-heading">Art!</h2>



<p><a href="https://github.com/clort81">@clort81</a> sent me this picture:</p>



<figure class="wp-block-image size-full"><img alt="" class="wp-image-1289" height="1488" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/face-4x.png" width="1296"/></figure>



<p>What's special about it? Well, it's character art!</p>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-1291" height="1341" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/face-eyes-16x-1920x1341.png" width="1920"/></figure>



<p>You have to zoom in a bit before it becomes obvious; there're only two colors per character cell.</p>



<p>The glyphs are something else, though. You see, @clort81 wasn't happy with the limited offering of block drawing symbols in Unicode, and set out to create <a href="https://hpjansson.org/misc/blapinus.pcf.gz">Blapinus</a>, a 6125-glyph (!) hand-pixeled 6×12 PCF font with all the shapes you could ever want.</p>



<figure class="wp-block-image size-full is-resized"><img alt="" class="wp-image-1300" height="930" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/blapinus-fontforge.png" style="width: 840px; height: auto;" width="1806"/><figcaption class="wp-element-caption">Best <a href="https://www.unicode.org/faq/private_use.html">PUA</a></figcaption></figure>



<p>Plug that into your terminal (and Chafa), et voilà:</p>



<pre class="wp-block-code"><code class="language-bash" lang="bash">sudo cp blapinus.pcf.gz /usr/share/fonts/misc/
xterm -font -blap-*</code></pre>



<p>Note that your fonts may live somewhere else, so relocate accordingly. Then inside XTerm, run:</p>



<pre class="wp-block-code"><code class="language-bash" lang="bash">chafa -f symbols --glyph-file blapinus.pcf.gz --symbols imported hello.png</code></pre>



<p>If you see strange symbols in your output, you can try excluding some wide and ambiguous code points, e.g. <code>--symbols imported-wide-ued00..uffff</code>.</p>



<p>You can probably set this up in other terminals and display servers too, but know that it could be a long and winding path you're going down. Traveler beware. Or push the pedal to the metal and write a trip report. I'd love to read it.</p>



<p><em>If</em> your terminal renders the font correctly, this can even have somewhat practical qualities:</p>



<p>First, it integrates perfectly with tmux and GNU Screen. Redraw, scrollback and editing just works, no passthrough tricks required.</p>



<p>Second, albeit lossy, the compression ratio is surprisingly good. Assuming four bytes per pixel, a 6×12 cell is 288 bytes uncompressed. We turn this into 39 bytes at most (a maximum of 36 bytes for the direct color sequence plus 3 bytes for the UTF-8 character), or an 86% reduction. Not bad, considering the compression dictionary is a 100kB font file.</p>



<p>Deflate will further compress this kind of data by 3/4, so if you're running this in a compressed ssh session, you can expect the total gain to be about 95%.</p>



<h2 class="wp-block-heading">Prior art!</h2>



<p>I've mentioned <a href="https://cdluminate.github.io/">Mo Zhou</a>'s work <a href="https://hpjansson.org/blag/2019/08/05/chafa-1-2-0/">before</a>, but I'd be remiss not to bring it up here; they focused their considerable ML skills on a <a href="https://github.com/hpjansson/chafa/tree/master/tools/fontgen">generator</a> that takes a lot of the pain out of the font creation process. Just point it at an image collection, and by the magic of k-means clustering and a minimal increase in your carbon footprint, out pops a new font brimming with delectable puzzle pieces. You get scalable TTF, with SVG as an intermediate format, which is more agreeable with modern rendering stacks. Here it is in VTE:</p>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-1305" height="1499" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/fontgen-example-1-1920x1499.png" width="1920"/></figure>



<p>This ML-generated font makes for a more organic look. There are unfortunately still some artifacts caused – presumably – by VTE's cell padding. The generator has offset hacks to work around it, but it's hard to make custom connective glyphs look perfect in every terminal.</p>



<p>You can read more about it in one of our <a href="https://github.com/hpjansson/chafa/issues/20">longest-running</a> GitHub issues. We're taking it <a href="https://github.com/hpjansson/chafa/issues/150">all the way</a>.</p>



<h2 class="wp-block-heading">Cool applications</h2>



<p>Chafa's found its way into the nooks and crannies of many a sweet application by now. I'd especially like to mention these three here:</p>



<figure class="wp-block-image size-full"><a href="https://github.com/ansiwave/ansiwave"><img alt="" class="wp-image-1320" height="938" src="https://hpjansson.org/blag/wp-content/uploads/2024/01/ansiwave-logo.png" width="1316"/></a></figure>



<p><a href="https://github.com/ansiwave/ansiwave">ANSIWAVE BBS</a>, the brainchild of <a href="https://sekao.net/">Zach Oakes</a>, is written in Nim and contains an embedded build of Chafa for character graphics generation. As a one-time (and sometimes) BBS sysop and denizen, this hits me right in the feels.</p>



<p><a href="https://kyoheiu.dev/felix/">Felix</a> is a nice file browser by <a href="https://kyoheiu.dev/">Kyohei Uto</a> written in Rust. It uses Chafa as an external image previewer.</p>



<p><a href="https://github.com/ravachol/kew">kew</a>, a terminal music player by the mysterious <a href="https://github.com/ravachol">@ravachol</a>, is written in C and uses the native Chafa API to generate cover previews. Development on this has been moving very quickly.</p>



<h2 class="wp-block-heading">A laid-back place to chat about all this stuff</h2>



<p>Issue trackers are formal and supposedly high-SNR. If you'd like a more relaxed place to chat about Chafa, your own programs, terminal graphics (modern or ancient), graphics programming in general or artistic expression related to any of these, drop by our <s>secret business</s> Matrix channel, <strong><a href="https://matrix.to/#/#chafa:matrix.org">#chafa:matrix.org</a></strong>. We'll be waiting.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img alt="It's the 90s. Go for it." class="wp-image-1227" height="300" src="https://hpjansson.org/blag/wp-content/uploads/2023/02/90s-go_for_it.gif" width="400"/></figure></div>


<p>I'm also <a href="https://mstdn.social/@hpj">enjoying Mastodon</a> these days. Occasional announcements and amusements go there. It's good.</p>



<h2 class="wp-block-heading">Thanks</h2>



<p>Last, but not least: a big thank you to everyone who wrote code, reported bugs, filed suggestions and helped test this time around. And an extra big thanks to all the packagers and distributors who make the F/OSS world turn. You're the best.</p></div>
    </content>
    <updated>2024-01-18T02:57:07Z</updated>
    <published>2024-01-18T02:57:07Z</published>
    <category term="Computing"/>
    <category term="ansi art"/>
    <category term="chafa"/>
    <category term="release"/>
    <category term="terminal graphics"/>
    <category term="textmode"/>
    <author>
      <name>Hans Petter Jansson</name>
    </author>
    <source>
      <id>https://hpjansson.org/blag/</id>
      <link href="https://hpjansson.org/blag/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://hpjansson.org/blag/" rel="alternate" type="text/html"/>
      <subtitle>Personal blag of Hans Petter Jansson: Fun with computers edition</subtitle>
      <title>Et tu, Cthulhu</title>
      <updated>2024-01-18T16:34:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://dorothykabarozi.wordpress.com/?p=80</id>
    <link href="https://dorothykabarozi.wordpress.com/2024/01/16/unveiling-my-journeyhalf-way-through-my-outreachy-internship-with-gnome/" rel="alternate" type="text/html"/>
    <title>Unveiling My Journey:Half way through my Outreachy internship with GNOME</title>
    <summary>Hello there ! Welcome back!. As I reach the midpoint of my internship, I’m thrilled to share my journey into the intricate world of end-to-end testing for GNOME OS using the powerful tool, openQA. From initial bafflement to mastering complex tests, it’s been a roller coaster of learning and discovery. Here are a few things […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Hello there ! Welcome back!.</p>



<p>As I reach the midpoint of my internship, I’m thrilled to share my journey into the intricate world of end-to-end testing for GNOME OS using the powerful tool, openQA. From initial bafflement to mastering complex tests, it’s been a roller coaster of learning and discovery. Here are a few things i have learned so far along this journey as it unfolds as an Outreachy Intern!</p>



<p><strong>Key Takeaways</strong></p>



<ul>
<li><strong>End-to-End Testing Mastery</strong>: I’ve gained an in-depth understanding of end-to-end testing, a critical component in ensuring a smooth user experience in software development.</li>



<li><strong>Problem-Solving Skills</strong>: Tackling complex technical issues head-on has honed my problem-solving skills, a vital asset in any tech career.</li>



<li><strong>Continuous Learning</strong>: The tech field is ever-evolving, and this experience has instilled in me the importance of continual learning and adaptation.</li>



<li><strong>Learning to to collaborate and effectively communicate</strong>: I can not stress this enough! Do not be shy on this as silence eats you up more or even worse the uncomfortable feeling of not finishing the task and being stuck for long.</li>



<li><strong>Learning Git</strong>: There are some Git commands that i had seen but not used but while working on this project i had to master,still cant believe I can <code>git rebase</code> faster and excitingly without breaking things! Don’t forget i can <code>git rebase -i HEAD~3</code> and squash multiple commits into 1 and even when nano editor played me a bit i did crack it in the end. Lastly I learned how to cherry pick commits and put them on on another branch and am till learning more. My mentors shared some resources that helped me along the way thanks to Sonny Piers and Sam Thursfield who were very quick to help. Checkout one of the resources that i looked at here :<a href="https://www.freecodecamp.org/news/git-rebase-handbook/">Handbook</a> , some others are PDF’s I cannot share here.</li>
</ul>



<p>As I continue this exciting journey, I’m reminded that mastering technology is as much about understanding its complexities as it is about embracing the learning process. To those embarking on a similar path, remember: every challenge is an opportunity to grow. Dive in, stay curious, and enjoy the ride in the world of tech testing!</p>



<p>Happy testing, and keep exploring! <img alt="&#x1F680;" class="wp-smiley" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f680.png" style="height: 1em;"/><img alt="&#x1F5A5;" class="wp-smiley" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f5a5.png" style="height: 1em;"/></p></div>
    </content>
    <updated>2024-01-16T16:12:50Z</updated>
    <published>2024-01-16T16:12:50Z</published>
    <category term="Uncategorized"/>
    <category term="devops"/>
    <category term="git"/>
    <category term="github"/>
    <category term="gnome"/>
    <category term="linux"/>
    <category term="openqa"/>
    <category term="outreachy"/>
    <category term="programming"/>
    <author>
      <name>dkabarozi</name>
    </author>
    <source>
      <id>https://dorothykabarozi.wordpress.com</id>
      <logo>https://s0.wp.com/i/buttonw-com.png</logo>
      <link href="https://dorothykabarozi.wordpress.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://dorothykabarozi.wordpress.com" rel="alternate" type="text/html"/>
      <link href="https://dorothykabarozi.wordpress.com/osd.xml" rel="search" title="Dorothy Kabarozi" type="application/opensearchdescription+xml"/>
      <link href="https://dorothykabarozi.wordpress.com/?pushpress=hub" rel="hub" type="text/html"/>
      <subtitle>Portfolio</subtitle>
      <title>Dorothy Kabarozi</title>
      <updated>2024-01-16T16:12:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://samthursfield.wordpress.com/?p=2324</id>
    <link href="https://samthursfield.wordpress.com/2024/01/16/status-update-16-01-2024/" rel="alternate" type="text/html"/>
    <title>Status update, 16/01/2024</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Happy new year everyone! For better or worse we’re now well into the 2020s. Here are some things I’ve been doing recently. A post on the GNOME openQA tests: Looking back to 2023 and forwards to 2024. I won’t repeat the post here, go read it and see what I hope to see in 2024 with … <a class="more-link" href="https://samthursfield.wordpress.com/2024/01/16/status-update-16-01-2024/">Continue reading <span class="screen-reader-text">Status update, 16/01/2024</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Happy new year everyone! For better or worse we’re now well into the 2020s. </p>



<p>Here are some things I’ve been doing recently.</p>



<p>A post on the GNOME openQA tests: <a href="https://discourse.gnome.org/t/gnome-openqa-tests-looking-back-at-2023-and-forwards-to-2024/18991">Looking back to 2023 and forwards to 2024</a>. I won’t repeat the post here, go read it and see what I hope to see in 2024 with regards to QA testing. </p>



<p>I’m still mentoring <a href="https://dorothykabarozi.wordpress.com/">Dorothy</a> and <a href="https://tanjuachaleke.wordpress.com/">Tanjuate</a> to work on the tests and we’re about at the half way point of the Outreachy internship. Our initial goal was to test GNOME’s accessibility features and this work is nearly done, hopefully we’ll be showing it off this week. Here’s a sneak preview of the new <a href="https://openqa.gnome.org/tests/2764">gnome_accessibility testsuite</a>…</p>



<figure class="wp-block-image size-large"><a href="https://samthursfield.files.wordpress.com/2024/01/image-3.png"><img alt="Screenshot of openqa.gnome.org showing tests: a11y_seeing, a11y_hearing, a11y_text_to_speech, a11y_zoom, a11y_screen_keyboard" class="wp-image-2329" height="498" src="https://samthursfield.files.wordpress.com/2024/01/image-3.png?w=1024" width="1024"/></a></figure>



<p>These features are sometimes forgotten (at least by me) and I hope this testsuite can serve as a good demo of what accessibility features GNOME has, in addition to guarding against regressions. </p>



<p><br/>It’s hard work to remotely mentor 2 interns on top of 35hrs/wk customer work and various internal work duties, so it’s great that Codethink are covering my time as a mentor, and it also helps that it’s winter and the outside world is hidden behind clouds most of the time. If only it was a face-to-face internship and I could hang out in Uganda or Cameroon for a while. Tanju and Dorothy are great to work with, if you’re looking to hire QA engineers then I can give a good reference for both.</p>



<p>I expect my open source side project for 2024 will still be the GNOME openQA tests, it ties in with a lot of activity around GNOME OS and it feels like we are pushing through useful workflow improvements for all of GNOME. Not that I’ve lost interest in other important stuff like desktop search, music recommendations and playing <a href="http://openttd.org/">OpenTTD</a>, but there is only so much you can do with a couple of hours a week.</p>



<p>What else? As usual I’ve been reviewing various speedups and SPARQL improvements from Carlos Garnacho in the Tracker search engine. I’m making plans to go to FOSDEM, so hopefully will see you there (especially if you want to talk about openQA). And I listed out my <a href="https://mastodon.art/@vladimirchicken/111647840913359516">top 5 albums of 2023</a> which you should go listen to before doing anything else.</p>



<p/></div>
    </content>
    <updated>2024-01-16T10:32:09Z</updated>
    <published>2024-01-16T10:32:09Z</published>
    <category term="Build and Test Tools"/>
    <category term="General"/>
    <category term="gnome"/>
    <author>
      <name>Sam Thursfield</name>
    </author>
    <source>
      <id>https://samthursfield.wordpress.com</id>
      <logo>https://samthursfield.files.wordpress.com/2020/10/cropped-favicon.png?w=32</logo>
      <link href="https://samthursfield.wordpress.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://samthursfield.wordpress.com" rel="alternate" type="text/html"/>
      <link href="https://samthursfield.wordpress.com/osd.xml" rel="search" title="Sam Thursfield" type="application/opensearchdescription+xml"/>
      <link href="https://samthursfield.wordpress.com/?pushpress=hub" rel="hub" type="text/html"/>
      <subtitle>Software and technology from Galicia, Spain</subtitle>
      <title>Sam Thursfield</title>
      <updated>2024-01-16T10:32:09Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://feaneron.com/?p=10026</id>
    <link href="https://feaneron.com/2024/01/15/mini-fundraiser-stream-deck-plus/" rel="alternate" type="text/html"/>
    <title>Mini Fundraiser: Stream Deck Plus</title>
    <summary>Following up on my previous blog post, due to popular demand, I started a small fundraiser campaign to acquire an Elgato Stream Deck Plus. The goal is US$ 500, which should cover the costs of acquiring the device, and should pay for a few hours of reverse engineering work Boatswain development. Naturally, I’ll also document […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Following up on my <a href="https://feaneron.com/2024/01/12/2023-in-retrospect/">previous blog post</a>, due to popular demand, I started a small fundraiser campaign to acquire an <a href="https://www.elgato.com/pl/en/p/stream-deck-plus-black" rel="noreferrer noopener" target="_blank">Elgato Stream Deck Plus</a>.</p>



<p>The goal is US$ 500, which should cover the costs of acquiring the device, and should pay for a few hours of <s>reverse engineering work</s> Boatswain development. Naturally, I’ll also document the USB format that these devices use, so that other developers out there can implement support in their own apps.</p>



<p>This particular model will be more complicated than other Stream Deck devices because it features a touch screen, and 4 activatable knobs. It will require a rather substantial rework of <a href="https://flathub.org/apps/com.feaneron.Boatswain">Boatswain</a> so that it can support separate button grids, different button types, finger detection, and more.</p>



<figure class="wp-block-image size-full is-style-rounded"><img alt="" class="wp-image-10028" height="1338" src="https://feaneron.com/wp-content/uploads/2024/01/image-46-edited.png" width="1977"/></figure>



<p>I did reach out to Elgato, but they don’t seem interested in giving away one of their devices, or even a devboard, for me to hack on.</p>



<p>Whether or not this goal is reached, I’d like to thank all of the people that supported me on <a href="https://ko-fi.com/feaneron" rel="noreferrer noopener" target="_blank">Ko-Fi</a> and <a href="https://github.com/sponsors/GeorgesStavracas/" rel="noreferrer noopener" target="_blank">GitHub</a> so far. Your support is truly humbling and it allowed me to write Boatswain in the first place, and much more!</p>



<p><strong>Edit: since writing this article, I was let known that there is <a href="https://www.npmjs.com/package/@elgato-stream-deck/node" rel="noreferrer noopener" target="_blank">one other project</a> that already reverse engineered parts of <strong>this</strong> device. I’ve adjusted the description to mention “Boatswain development” instead of “reverse engineering”.</strong></p>



<div class="wp-block-spacer"/>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-layout-1 wp-block-buttons-is-layout-flex">
<div class="wp-block-button has-custom-font-size has-medium-font-size" style="font-style: normal; font-weight: 700;"><a class="wp-block-button__link has-contrast-color has-text-color has-background has-link-color wp-element-button" href="https://ko-fi.com/feaneron/goal?g=0" rel="noreferrer noopener" target="_blank"><strong>Fund This Device</strong></a></div>
</div></div>
    </content>
    <updated>2024-01-15T21:47:07Z</updated>
    <published>2024-01-15T21:47:07Z</published>
    <category term="Boatswain"/>
    <author>
      <name>Georges Stavracas</name>
    </author>
    <source>
      <id>https://feaneron.com</id>
      <logo>https://feaneron.com/wp-content/uploads/2014/10/jin-150x150.jpg</logo>
      <link href="https://feaneron.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://feaneron.com" rel="alternate" type="text/html"/>
      <subtitle>Scratching my own free software itches</subtitle>
      <title>feaneron</title>
      <updated>2024-01-20T23:08:06Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://blogs.gnome.org/alexl/?p=7681</id>
    <link href="https://blogs.gnome.org/alexl/2024/01/15/testing-composefs-in-silverblue/" rel="alternate" type="text/html"/>
    <title>Testing composefs in Silverblue</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">As of the version 39 of Fedora Silverblue all the basic code is  merged to support a composefs-based root filesystem. To try it, do: Update to the latest version (I tested 39.20240115.0) Configure ostree to create and use composefs images: $ sudo ostree config set ex-integrity.composefs yes Trigger a manual (re)deploy of the current version: … <a class="more-link" href="https://blogs.gnome.org/alexl/2024/01/15/testing-composefs-in-silverblue/">Continue reading <span class="screen-reader-text">Testing composefs in Silverblue</span></a></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>As of the version 39 of <a href="https://fedoraproject.org/silverblue/">Fedora Silverblue</a> all the basic code is  merged to support a composefs-based root filesystem.</p>
<p>To try it, do:</p>
<ul>
<li>
<ul>
<li>
<ul>
<li>Update to the latest version (I tested 39.20240115.0)</li>
<li>Configure ostree to create and use composefs images:<br/>
<code>$ sudo ostree config set ex-integrity.composefs yes</code></li>
<li>Trigger a manual (re)deploy of the current version:<br/>
<code>$ sudo ostree admin deploy fedora/39/x86_64/silverblue</code></li>
<li>Reboot into the new deploy</li>
<li>If using ext4 filesystem for rootfs (not needed for btrfs), enable “verity” feature on it:<br/>
<code>$ sudo tune2fs -O verity /dev/vda3 # Change to right root disk</code></li>
<li>Enable fs-verity on all pre-existing ostree repo files:<br/>
<code>$ sudo ostree admin post-copy</code></li>
</ul>
</li>
</ul>
</li>
</ul>
<p>At this point, the rootfs should be be a composefs mount. You can verify it by looking at the mount, which should look like this:</p>
<pre>$ findmnt /
TARGET SOURCE  FSTYPE  OPTIONS
/ overlay overlay ro,relatime,seclabel,lowerdir=/run/ostree/.private/cfsroot-lower::/sysroot/ostree/repo/objects,redirect_dir=on,metacopy=on</pre>
<p>So, what does this mean?</p>
<p>First of all, it means the rootfs is truly read-only:</p>
<pre># touch /usr/new_file
touch: cannot touch '/usr/new_file': Read-only file system</pre>
<p>The above error message happens also with regular ostree, but in that case it is only a read-only mount flag, and a root user can re-mount it read-write to modify it (or modify the backing directories in /ostree). However, when using composefs, the root filesystem is a combination of a <a href="https://docs.kernel.org/filesystems/erofs.html">erofs</a> mount (from /ostree/deploy/fedora/deploy/*/.ostree.cfs) and an overlayfs with no writable directories, and neither of these have any ability to write to disk.</p>
<p>In addition, the system is set up to validate all file accesses, as the composefs image has recorded the expected fs-verity checksums for all files and overlayfs  can validate them on use.</p>
<p>To fully complete the validation, Silverblue will just need a few additions (which I hope will be done soon):</p>
<ul>
<li>Each build should generate a one-use signature keypair</li>
<li>The ostree commit should be signed with the private key</li>
<li>Add public key as /etc/ostree/initramfs-root-binding.key</li>
<li>Add /usr/lib/ostree/prepare-root.conf with this content:
<pre>[composefs]
enabled=yes
signed=yes</pre>
<p>These files will be copied into the initrd, and during boot the public key will be used to validate the composefs image, which in turn guarantee that all file accesses give the correct, unchanged data.</p></li>
</ul>
<p>To further improve security, the initramfs and the kernel can be combined into a <a href="https://github.com/uapi-group/specifications/blob/main/specs/unified_kernel_image.md">Unified Kernel Image</a> and signed. Then SecureBoot can guarantee that your system will not boot any other initramfs, and thus no other userspace.</p></div>
    </content>
    <updated>2024-01-15T15:40:48Z</updated>
    <published>2024-01-15T15:40:48Z</published>
    <category term="composefs"/>
    <category term="General"/>
    <author>
      <name>alexl</name>
    </author>
    <source>
      <id>https://blogs.gnome.org/alexl</id>
      <link href="https://blogs.gnome.org/alexl/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://blogs.gnome.org/alexl" rel="alternate" type="text/html"/>
      <subtitle>Cool links and commentary</subtitle>
      <title>Alexander Larsson</title>
      <updated>2024-01-17T12:15:45Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://feborg.es/?p=10303</id>
    <link href="https://feborg.es/updates-on-internships-administration/" rel="alternate" type="text/html"/>
    <title>Updates on our internships administration</title>
    <summary>For the past few years I have been managing GNOME’s participation in the Google Summer of Code and Outreachy internship programs. As a former alumni myself more than a decade ago, I believe these programs are a fundamental tool to onboard new contributors to our community and to provide opportunities for contributors to learn and […]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>For the past few years I have been managing GNOME’s participation in the Google Summer of Code and Outreachy internship programs. As a former alumni myself more than a decade ago, I believe these programs are a fundamental tool to onboard new contributors to our community and to provide opportunities for contributors to learn and join a thriving open source community. While I enjoy part of this management role, I am still a developer, and some of the internship activities are really energy/time consuming. So I have been looking for ways to improve that.</p>
<p>During my term as a Board member, the Board established the concept of committees, to extend the Board’s responsibilities and to solidify the Board’s <a href="https://blog.ergaster.org/post/20220503-scaling-the-foundation/">position of governance and oversight</a>. See <a href="https://wiki.gnome.org/Foundation/Committees">https://wiki.gnome.org/Foundation/Committees</a></p>
<p>Before my Board term ended, I proposed the creation of yet another committee: the <a href="https://wiki.gnome.org/InternshipCommittee">Internship Committee.</a> My goal was to increase the visibility of our internship efforts within the Board so that committee members have the resources and support they need to coordinate the programs. See <a href="https://gitlab.gnome.org/Teams/Board/-/issues/239">https://gitlab.gnome.org/Teams/Board/-/issues/239</a></p>
<p>Now the Board has voted to approve the creation of the committee! This means that now the Board will always have a liason member dedicated to facilitate the communication between the Board and the internship administrators. This also means that now the Internship Committee has more formal responsibilities, such as the ones defined on the committee charter. The committee already has multiple community members and is working towards improving our processeses.</p>
<p>Another step I wanted to take was to produce a documentation for the internship administration processeses so that we eliminate the bus factor and have also a easy time onboarding new admins.</p>
<p>I just pushed the initial version of the <a href="https://gitlab.gnome.org/Teams/internship/internships/-/blob/main/admins/Instructions.md">Internship Admin guide</a>, containing also my personal collection of templates for communication with interns, mentors, program organizations, etc… This allows for community members to improve the processes themselves all in once place. A lot of the templates I wrote need update and rewording (contributions are welcome).</p>
<p>And, while we are at it, don’t forget that we are gathering ideas for GSoC and Outreachy internships for 2024. Visit <a href="https://gitlab.gnome.org/Teams/Engagement/internship-project-ideas">https://gitlab.gnome.org/Teams/Engagement/internship-project-ideas</a> to learn more.</p></div>
    </content>
    <updated>2024-01-12T13:11:12Z</updated>
    <published>2024-01-12T13:11:12Z</published>
    <category term="gnome"/>
    <category term="GSoC"/>
    <category term="gsoc"/>
    <category term="internships"/>
    <category term="outreachy"/>
    <author>
      <name>Felipe Borges</name>
    </author>
    <source>
      <id>https://feborg.es</id>
      <logo>https://feborg.es/files/2023/12/cropped-avatar-32x32.jpg</logo>
      <link href="https://feborg.es/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://feborg.es" rel="alternate" type="text/html"/>
      <subtitle>Felipe Borges' blog about GNOME</subtitle>
      <title>Felipe Borges</title>
      <updated>2024-01-25T09:42:10Z</updated>
    </source>
  </entry>
</feed>
