<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>silva rerum</title>
	<atom:link href="https://horodecki.net/feed/" rel="self" type="application/rss+xml" />
	<link>https://horodecki.net</link>
	<description>Łukasza przechadzki po lesie rzeczy.</description>
	<lastBuildDate>Sun, 26 Apr 2026 14:26:58 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://horodecki.net/wp-content/uploads/2023/09/cropped-make-poland-left-lomo-head-512-1-150x150.jpg</url>
	<title>silva rerum</title>
	<link>https://horodecki.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pierwsze trzy miesiące 2026 na rowerze</title>
		<link>https://horodecki.net/2026/04/26/pierwsze-trzy-miesiace-2026-na-rowerze/</link>
					<comments>https://horodecki.net/2026/04/26/pierwsze-trzy-miesiace-2026-na-rowerze/#respond</comments>
		
		<dc:creator><![CDATA[silva rerum]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 14:26:54 +0000</pubDate>
				<category><![CDATA[Podsumowania rowerowe]]></category>
		<category><![CDATA[bikeFitting]]></category>
		<category><![CDATA[bikeSizing]]></category>
		<category><![CDATA[Canyon]]></category>
		<category><![CDATA[Coros]]></category>
		<category><![CDATA[Dura]]></category>
		<category><![CDATA[gdańsk]]></category>
		<category><![CDATA[Grizl]]></category>
		<category><![CDATA[las]]></category>
		<category><![CDATA[podsumowanie]]></category>
		<category><![CDATA[pola]]></category>
		<category><![CDATA[ridley]]></category>
		<category><![CDATA[rower]]></category>
		<category><![CDATA[squadrats]]></category>
		<category><![CDATA[tory]]></category>
		<category><![CDATA[trek]]></category>
		<category><![CDATA[VeloLab]]></category>
		<category><![CDATA[zakupy]]></category>
		<category><![CDATA[zdjęcia]]></category>
		<guid isPermaLink="false">https://horodecki.net/?p=15973</guid>

					<description><![CDATA[Zapraszam na rowerowe podsumowanie pierwszego kwartału 2026. Będzie trochę fotek z jeżdżenia i parę słów o nowościach.]]></description>
										<content:encoded><![CDATA[
<p id="pierwsze-trzy-miesiące-rowerowego-roku">Na początku 2026 niewiele się u mnie działo w dziedzinie rowerowej, więc wzorem poprzedniego roku odpuściłem comiesięcznie podsumowania na rzecz załatwienia od razu całego kwartału.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300;line-height:1.5">– <img decoding="async" width="24" height="24" class="wp-image-7677" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/bicycle-white.svg" alt="Uproszczona ikonka roweru zwróconego w prawo."/> –</p>



<h2 class="wp-block-heading" id="styczeń">Styczeń</h2>



<p>Przez cały miesiąc pięć razy wybrałem się rowerem na zakupy, dzięki oponom z kolcami. Do tego tylko dwa razy przejechałem się dla frajdy. Raz skończyło się na 20 kilometrach, bo okazało się po kilku kilometrach, że szosa jest sucha i czysta tylko do granicy gminy, a dalej zaczyna się częściowo zmarznięty szary śnieg. Na szczęście za drugim razem drogi były już wolne od takich niespodzianek i udało się wykręcić ponad 36 kilometrów.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119.jpg" data-lbwps-gid="2" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/100s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO51&lt;/span&gt; "><img fetchpriority="high" decoding="async" width="500" height="374" data-id="15975" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119-500x374.jpg" alt="Ciemnogranatowy rower Trek z dużymi sakwami na bagażniku osłoniętymi czerwonymi pokrowcami stoi w poprzek zaśnieżonej polnej drogi w bardzo mglisty dzień." class="wp-image-15975" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260128_092119.jpg 1280w" sizes="(max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658.jpg" data-lbwps-gid="2" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/881s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img decoding="async" width="500" height="374" data-id="15976" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658-500x374.jpg" alt="Słoneczny dzień. Pod intensywnie błękitnym niebem znajduje się szosa przez pola zasłonięta jasnoszarą breją pośniegową, częściowo zmarznięta w koleiny. W kilku miejscach szosy śnieg jest wyjeżdżony i zastąpiony przez fragmenty lodu." class="wp-image-15976" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260112_120658.jpg 1280w" sizes="(max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255.jpg" data-lbwps-gid="2" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/100s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO56&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15977" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255-500x374.jpg" alt="Ciemnoniebieski rower szutrowy Ridley stoi na ośnieżonym poboczu, oparty o nieduże bezlistne drzewko a w tle znajduje się mieszany las z kilkoma drzewami oplecionymi zielonym bluszczem." class="wp-image-15977" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260120_132255.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>
</figure>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300;line-height:1.5">– <img decoding="async" width="24" height="24" class="wp-image-7677" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/bicycle-white.svg" alt="Uproszczona ikonka roweru zwróconego w prawo."/> –</p>



<h2 class="wp-block-heading" id="luty">Luty</h2>



<p>Przymroziło zdrowo i przez pierwsze dwa tygodnie tylko raz wsiadłem na rower, by pojechać na zakupy. Na szczęście później zrobiło się przyjemniej i mogłem wybrać się na rowerowanie trzy razy: na lokalną pętelkę 36 km, <a href="https://horodecki.net/2023/06/06/mala-petla-notecka/">Małą Pętlę Notecką</a> oraz trochę dłuższe kulanie po okolicy (57 km).</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807.jpg" data-lbwps-gid="3" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/230s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15980" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807-500x374.jpg" alt="Ciemnoniebieski rower szutrowy stoi oparty o drzewo na skraju zaśnieżonego lasu. Spod śniegu wystają suche dębowe liście." class="wp-image-15980" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260220_150807.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325.jpg" data-lbwps-gid="3" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/1139s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15979" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325-500x374.jpg" alt="Ten sam rower szutrowy oparty o betonową barierę przy drodze, za którą widać połacie łąk z suchą trawą, na których stoją wielkie kałuże wody z roztopów." class="wp-image-15979" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260226_125325.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046.jpg" data-lbwps-gid="3" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/391s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15978" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046-500x374.jpg" alt="Kolejne zdjęcie roweru, tym razem opartego o znak ostrzegający o niestrzeżonym przejeździe kolejowym, widocznym w głębi zdjęcia." class="wp-image-15978" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260228_150046.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>
</figure>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300;line-height:1.5">– <img decoding="async" width="24" height="24" class="wp-image-7677" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/bicycle-white.svg" alt="Uproszczona ikonka roweru zwróconego w prawo."/> –</p>



<h2 class="wp-block-heading" id="marzec">Marzec</h2>



<p>W marcu zaczęło robić się cieplej i pojeździłem trochę więcej – pięć razy na zakupy i siedem dla frajdy.</p>



<p>W pierwszym tygodniu najpierw zaliczyłem kolejną trasę 50+, a potem machnąłem prawie 80 km w sporej części po leśnych szutrach. </p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156.jpg" data-lbwps-gid="4" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/209s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15984" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156-500x374.jpg" alt="Częściowo zamarznięta woda stojąca między drzewami nadrzecznego lasu zalewowego." class="wp-image-15984" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_123156.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343.jpg" data-lbwps-gid="4" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/241s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15982" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343-500x374.jpg" alt="Prosta szutrowa droga przez sosnowy las w słoneczny, wczesnowiosenny dzień." class="wp-image-15982" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_132343.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049.jpg" data-lbwps-gid="4" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/113s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15983" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049-500x374.jpg" alt="Rower oparty o drewnianą barierkę na leśnym postoju. W tle widoczna wiata ze stołem i ławkami oraz tablica informacyjna poświęcona szyszkom." class="wp-image-15983" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260307_141049.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>
</figure>



<p>Drugi tydzień to tylko wyjazd na zakupy, nie pamiętam dlaczego, ale podejrzewam, że mogło być tam jakieś załamanie pogody. Za to 17 marca wybrałem się do Gdańska (pociągiem, nie rowerem), na <em>bike sizing</em> w tamtejszym <a href="https://www.velolab.pl/">VeloLABie</a>, by mój następny gravel jak najlepiej pasował do mnie. </p>



<p>O całym procesie wyboru i kupowania napiszę osobną notkę, gdy nakulam trochę więcej kilometrów na nowej maszynie. Może po przejechaniu 2k?</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722.jpg" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/100s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO697&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722-500x374.jpg" alt="Sala bike fittingu. Po lewej widać fragment urządzenia pozwalającego na odtworzenie roweru o dowolnej geometrii z możliwością przesunięcia oraz podwyższenia kierownicy, siodła itp. Na wprost na podeście z logo VeloLab znajduje się pusty trenażer Tacx. Na ścianie za nim sporo rowerowych siodełek. Poza tym laptop, wentylator, szafka (najprawdopodobniej) na części, poziomica i oprawione czarno-białe pamiątkowe zdjęcia." class="wp-image-15986" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260317_133722.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<p>Kolejny tydzień to dwie jazdy w okolicy 40 kilometrów, pierwsza jeszcze ze starym komputerkiem GPS od Lezyne, druga już z nowym Coros Dura, kupionym z myślą o kilkudniowych wyjazdach na następcy wysłużonego Ridleya. </p>



<p>W tej chwili mam nakręcone na nim prawie 800 km i jestem bardzo zadowolony, zwłaszcza z czasu pracy na baterii. Dzięki ładowaniu ze słońca nie musiałem go podłączać do ładowarki ani razu od początkowego naładowania do 100%, a nadal ma ponad 43%. Więcej pewnie napiszę w osobnym tekście.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260319_162723.jpg" data-lbwps-width="718" data-lbwps-height="960" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260319_162723-374x500.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/100s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO614&lt;/span&gt; "><img loading="lazy" decoding="async" width="374" height="500" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260319_162723-374x500.jpg" alt="Na drewnianym stole leży jasnoszare pudełko z komputerkiem rowerowym GPS Dura z firmy Coros. Na środku pudełka znajduje się zdjęcie urządzenia, nad nim logo firmy, a na spodzie nazwa sprzętu z dopiskiem „Solar GPS bike computer”." class="wp-image-15988" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260319_162723-374x500.jpg 374w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260319_162723.jpg 718w" sizes="auto, (max-width: 374px) 100vw, 374px" /></a></figure>



<p>Później zaliczyłem jeszcze <a href="https://squadrats.com/expedition/D7a7iHqrtnaNb43o4omX">wypad na łapanie skwadratów</a> w północno-wschodnim rogu mojego ubersquadratu, dzięki czemu powiększyłem go do rozmiaru 21&#215;21 i w końcu „nadejszła wiekopomna chwila”, czyli przyjechał mój nowy rower, Caynon Grizl 7 w kolorze <em>affogato</em>, czyli kawy z lodami waniliowymi. Jak na złość akurat nie miałem czasu wybrać się na dłuższe kulanie i pierwsza jazda to tylko 36 km.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021.jpg" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/494s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO50&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021-500x374.jpg" alt="Słoneczny dzień. Jasnokremowy rower szutrowy Canyon Grizl stoi oparty tylnym kołem o przydrożny słupek tuż przy torach kolejowych skręcających w oddali w prawo. Pomiędzy krzakami widać zielone pola i błękitne niebo." class="wp-image-15990" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260327_1255021.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<p>Dopiero kilka dni później, ostatniego dnia marca, mogłem wyskoczyć na <a href="https://squadrats.com/expedition/64NdUk67qevvrSq7eoah">kolejne zbieranie skwadratów</a>, tym razem w północno-zachodnim rogu. 95 kilometrów, w części po lasach i polach, pokazało mi, że dobrze wybrałem, bo jechało się świetnie.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838.jpg" data-lbwps-gid="5" data-lbwps-width="1280" data-lbwps-height="958" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838-500x374.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Xiaomi M2101K9G&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/1.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/100s&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_iso&quot;&gt;ISO159&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="374" data-id="15994" src="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838-500x374.jpg" alt="Ten sam rower szutrowy, tym razem wyposażony jest już w torby. Jedna mała znajduje się na ramie, a większa jest wpasowana w ramę. Rower toi oparty o omszały, betonowy słupek przy szutrowej drodze przez las." class="wp-image-15994" srcset="https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838-500x374.jpg 500w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838-1024x766.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838-768x575.jpg 768w, https://horodecki.net/wp-content/uploads/2026/04/IMG_20260331_150838.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/19446615.jpg" data-lbwps-gid="5" data-lbwps-width="719" data-lbwps-height="960" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/19446615-374x500.jpg"><img loading="lazy" decoding="async" width="374" height="500" data-id="15992" src="https://horodecki.net/wp-content/uploads/2026/04/19446615-374x500.jpg" alt="Słabowidoczna droga gruntowa przez mieszany las. Droga ma pas trawy pośrodku pomiędzy koleinami i jest zasypana suchymi liśćmi, tak jak i cały teren pomiędzy drzewami po bokach." class="wp-image-15992" srcset="https://horodecki.net/wp-content/uploads/2026/04/19446615-374x500.jpg 374w, https://horodecki.net/wp-content/uploads/2026/04/19446615.jpg 719w" sizes="auto, (max-width: 374px) 100vw, 374px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/19446613.jpg" data-lbwps-gid="5" data-lbwps-width="719" data-lbwps-height="960" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/19446613-374x500.jpg"><img loading="lazy" decoding="async" width="374" height="500" data-id="15993" src="https://horodecki.net/wp-content/uploads/2026/04/19446613-374x500.jpg" alt="Pochmurny dzień. Bardzo piaszczysta droga przez zieleniące się pola. W piasku widać skręcające to w jedną, to w drugą ślady kół roweru, a od pewnego miejsca też i moich stóp, bo musiałem rower podprowadzić pod górkę." class="wp-image-15993" srcset="https://horodecki.net/wp-content/uploads/2026/04/19446613-374x500.jpg 374w, https://horodecki.net/wp-content/uploads/2026/04/19446613.jpg 719w" sizes="auto, (max-width: 374px) 100vw, 374px" /></a></figure>
</figure>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300;line-height:1.5">– <img decoding="async" width="24" height="24" class="wp-image-7677" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/bicycle-white.svg" alt="Uproszczona ikonka roweru zwróconego w prawo."/> –</p>



<h2 class="wp-block-heading" id="podsumowanie">Podsumowanie</h2>



<p>W sumie w ciągu pierwszego kwartału 2026 zaliczyłem tylko 11 wypadów na zakupy (łącznie ok. 120 kilometrów) i 12 dla frajdy (610 km). W porównaniu z tym samym okresem 2025 zrobiłem o 44 kilometry więcej, więc mogło być gorzej. </p>



<p>W czasie pisania tego tekstu już wiem, że w kwietniu nie uda mi się zachować tej tendencji, głównie przez pracę, ale mam tak wielką frajdę z jazdy na nowym rowerze, że każda minuta spędzona na Gryzelku liczy się podwójnie.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horodecki.net/2026/04/26/pierwsze-trzy-miesiace-2026-na-rowerze/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tłumaczenie Wolnego i Otwartego Oprogramowania</title>
		<link>https://horodecki.net/2026/04/09/tlumaczenie-wolnego-i-otwartego-oprogramowania/</link>
					<comments>https://horodecki.net/2026/04/09/tlumaczenie-wolnego-i-otwartego-oprogramowania/#comments</comments>
		
		<dc:creator><![CDATA[silva rerum]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 17:54:35 +0000</pubDate>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Nerdzenie]]></category>
		<category><![CDATA[Crowdin]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[Gtranslator]]></category>
		<category><![CDATA[tłumaczenie]]></category>
		<category><![CDATA[Weblate]]></category>
		<guid isPermaLink="false">https://horodecki.net/?p=15403</guid>

					<description><![CDATA[Trzecia część wpisu zachęcającego do zaangażowania się w społeczność Wolnego i Otwartego Oprogramowania, tym razem poświęcona tłumaczeniu programów.]]></description>
										<content:encoded><![CDATA[
<p id="spis-treści">Witam w ostatniej części cyklu, w którym próbuję zachęcić do dołączenia do społeczności tworzącej Wolne i Otwarte Oprogramowanie. W <a href="https://horodecki.net/2026/03/08/zapraszam-do-spolecznosci-wolnego-i-otwartego-oprogramowania/">pierwszym odcinku</a> opowiedziałem czym jest WiOO i pokazałem, jak można się zaangażować jako osoba programująca, tworząca dokumentację, zgłaszająca błędy i podsuwająca pomysły na nowe funkcjonalności. <a href="https://horodecki.net/2026/03/15/kolejne-sposoby-na-wejscie-do-spolecznosci-foss/">Druga część</a> była poświęcona testowaniu aplikacji w czasie ich powstawania, pomaganiu innym użytkownikom oraz wspieraniu osób tworzących FOSS, a tym razem opowiem o tłumaczeniu oprogramowania.</p>



<h2 class="wp-block-heading">Spis treści</h2>



<ul class="wp-block-list">
<li><a href="#wprowadzenie">Wprowadzenie</a></li>



<li><a href="#webinterfejsy">Tłumaczenie przy użyciu webinterfejsów </a>
<ul class="wp-block-list">
<li><a href="#weblate">Weblate</a> </li>



<li><a href="#crowdin">Crowdin</a> </li>
</ul>
</li>



<li><a href="#pliki">Przez ręczną edycję plików</a> </li>



<li><a href="#gnome">W polskim zespole GNOME</a></li>
</ul>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="wprowadzenie">Wprowadzenie</h2>



<p>W końcu przyszła pora na mój ulubiony sposób angażowania się w WiOO, czyli tłumaczenie programów, tak by jak najwięcej osób mogło z nich korzystać.</p>



<p>W tej chwili mam na koncie tłumaczenie na polski m.in.:</p>



<ul class="wp-block-list">
<li>klienta Fediwersum <a href="https://tuba.geopjr.dev/">Tuba</a>,</li>



<li>androidowych klientów fedi <a href="https://app.pixelix.social/">Pixelix</a> oraz <a href="https://pachli.app/">Pachli</a>,</li>



<li>edytora Markdown <a href="https://scratchmark.org/">Scratchmark</a>,</li>



<li>klienta Tidala <a href="https://dergs.dev/projects/tonearm">Tonearm</a>,</li>



<li>strony <a href="https://jointhefediverse.net/?lang=pl">Join the Fediverse</a>,</li>



<li>aplikacji pogody <a href="https://amit9838.github.io/mousam/">Mousam</a>,</li>



<li>wtyczki dla WordPressa <a href="https://pl.wordpress.org/plugins/embed-consent/">Embed Consent</a>.</li>
</ul>



<p>Przy okazji nauczyłem się zupełnie nowych rzeczy. Dzięki Tubie i Pixelix poznałem interfejsy do tłumaczenia Weblate i Crowdin, dla Join the Fediverse dowiedziałem się jak forkować repozytorium i tworzyć <em>merge request</em> ze zmianami, a Mousam zawdzięczam poznanie tworzenia plików tłumaczenia przy użyciu <a href="https://horodecki.net/2024/03/26/python-gettext-i-tlumaczenia-z-kontekstem/">narzędzi gettext</a>. Dla kogoś innego to może być masa roboty, dla mnie zdobywanie nowych umiejętności i doświadczeń jest jedną z zalet angażowania się w&nbsp;WiOO.</p>



<p>Na podstawie powyższej listy mogliście się zorientować, że samo przetłumaczenie komunikatów to nie wszystko, bo trzeba jeszcze nasze tłumaczenie przekazać osobom tworzącym program, aby mogły je do niego włączyć. Można to zrobić na różne sposoby, w zależności od mechanizmów, które oferuje konkretny projekt. Żeby sprawdzić, który jest dostępny w danym przypadku, trzeba zacząć od zajrzenia na stronę programu.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="webinterfejsy">Tłumaczenie przy użyciu webinterfejsów</h2>



<p>Spora część aplikacji, które są rozwijane już dłuższy czas, dorobiła się mechanizmów ułatwiających tłumaczenie. Najczęściej są to wyspecjalizowane serwisy, z których najpopularniejsze są Weblate i Crowdin. Jeżeli na stronie projektu znajdziecie wzmiankę o którymś z nich, wasza praca przy tłumaczeniu będzie prosta i wygodna.</p>



<p>Zabawa zaczyna się od założenia konta w używanym przez dany program serwisie, po czym przechodzimy do wybranego projektu. Na liście dostępnych języków szukamy tego, na który chcemy tłumaczyć. Jeżeli już jest, możemy od razu przejść do tłumaczenia, w przeciwnym przypadku, trzeba najpierw go dodać.</p>



<p>W Weblate robi się to kliknięciem mało rzucającego się w oczy plusa, znajdującego się po lewej stronie nad ikonkami ołówka przy liście dostępnych tłumaczeń. Potem wybieramy język, na który chcemy tłumaczyć i klikamy „Rozpocznij nowe tłumaczenie”.</p>



<p>Na Crowdin trzeba kliknąć „Poproś o nowy język” i poza wyborem języka dodać wiadomość dla osób zarządzających projektem. Nie miałem okazji tego robić, ale zakładam, że taka prośba musi być ręcznie zatwierdzona, więc być może trzeba będzie trochę poczekać. </p>



<p>Gdy mamy już konto i wybrany język jest dostępny na liście tłumaczeń, możemy przystąpić do pracy, chyba że trafiliśmy na rzadki wypadek, w którym osoba rozwijająca oprogramowanie wymaga zaakceptowania „Contributor Licence Agreement”. Do tej pory przydarzyło mi się to tylko raz, przy tłumaczeniu Pachli.</p>



<p>Teraz już naprawdę możemy zabrać się za tłumaczenie. W większości małych i średnich programów całość tekstów do przetłumaczenia (nazywanych wiadomościami lub ciągami) jest zebrana w jednym module. Niektóre aplikacje, takie jak Pachli właśnie, rozbijają je na kilka różnych. Takie rozwiązanie ma swoje wady i zalety. Niektórym pewnie łatwiej ogarnąć garść ciągów na raz zamiast długiego zestawu, ja wolę raczej mieć wszystko w jednym miejscu.</p>



<p>No dobrze, mamy konto, wybrany język jest dostępny, zaakceptowaliśmy licencję i&nbsp;wklikaliśmy się w moduł do tłumaczenia. Co dalej? Zostało nam żmudne wypełnianie formularzy.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="weblate">Weblate</h3>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52.png" data-lbwps-width="1550" data-lbwps-height="1009" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52-500x325.png"><img loading="lazy" decoding="async" width="500" height="325" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52-500x325.png" alt="Okno przeglądarki z tłumaczeniem klienta Fediwersum Tuba otworzonym w interfejsie serwisu Weblate." class="wp-image-15416" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52-500x325.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52-1024x667.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52-768x500.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52-1536x1000.png 1536w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-18-48-52.png 1550w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Tłumaczenie w Weblate.</figcaption></figure>



<p>Powyżej znajduje się zrzut interfejsu Weblate z otwartym polskim tłumaczeniem Tuby. Pasek nad boksem „Tłumaczenie” pozwala na nawigację po ciągach i pokazuje aktualną pozycję na tle całości. Pole obok umożliwia wyszukiwanie ciągów spełniających określone wymagania (nieprzetłumaczone, oznaczone do dalszej edycji, z komentarzami itp.), a ostatnie służy do sortowania wiadomości do przetłumaczenia, dzięki czemu możemy np. szybko dotrzeć do ciągów ostatnio dodanych do aplikacji.</p>



<p>Główną część okna zajmuje miejsce na właściwe tłumaczenie. Pierwsze od góry jest pole z opisem ciągu dodawanym przez osoby tworzące aplikacje. Taki opis jest bardzo pomocny, zwłaszcza gdy trudno na podstawie ciągu źródłowego zorientować się, jaki jest kontekst jego wystąpienia, lub gdy w wiadomości występują jakieś zmienne (tutaj to %s oznaczające ilość wpisów). </p>



<p>Szkoda, że stosowanie opisów nie jest powszechniejsze, bo często zdarza się, że trudno zorientować się, jak najlepiej przetłumaczyć komunikat, bo np. w aplikacji oryginalny zwrot występuje w kilku miejscach, a każde wystąpienie po polsku będzie brzmiało inaczej. Tutaj może pomóc znajdująca się w prawej kolumnie informacja „Położenie ciągu źródłowego”, dzięki której możemy jednym kliknięciem otworzyć plik źródłowy i&nbsp;zobaczyć, gdzie znajduje się ten ciąg. Niestety, wymaga to chociaż podstawowej umiejętności czytania kodu.</p>



<p>Prawie zawsze w czasie tłumaczenia poza oknem, w którym pracuję, mam otwartą też aplikację, nad która pracuję, oraz repozytorium z kodem źródłowym, żeby móc odnaleźć kontekst, w którym występuje przekładany akurat tekst.</p>



<p>Pod opisem mamy oryginalną wiadomość. Tu wybrałem dla was rzecz trochę rzadszą, bo mamy do czynienia z rzeczownikiem z liczbą pojedynczą i mnogą. Jak widzicie, w&nbsp;angielskim to są dwa pola, u nas już trzy, ponieważ „posts” będziemy tłumaczyć inaczej w zależności od tego, czy to są „trzy wpisy”, czy „pięć wpisów”. Czerwone magiczne zaklęcie pod polami na tłumaczenie to formuła definiująca, dla jakich liczb występują odmienne formy liczby mnogiej.</p>



<p>Zazwyczaj jednak mamy do czynienia z prostą wersją jeden ciąg źródłowy = jeden ciąg przetłumaczony, ale wolałem wyjaśnić sprawę form liczby mnogiej, żebyście się nie dziwili, o co tu chodzi.</p>



<p>Pod polami na tłumaczenie znajduje się pole „Wymaga edycji”. Można go użyć, gdy np. nie jesteśmy pewni tłumaczenia i będziemy chcieli do niego wrócić.</p>



<p>Dwa z trzech przycisków poniżej są dość oczywiste: „Zapisz i kontynuuj” zapisze nasze tłumaczenie i przejdzie do następnego ciągu, „Zapisz i zostań” również zapisze, ale pozostanie w miejscu. Co robi „Zaproponuj”? Jeżeli chcemy poprawić czyjeś tłumaczenie, ale bez wcinania się w pracę tej osoby, możemy zaproponować swoją wersję. Taką sugestię osoba tłumacząca będzie potem mogła zaakceptować lub odrzucić, czasem też dodając komentarz tłumaczący decyzję.</p>



<p>Pod tłumaczeniem znajduje się pięć kart z przydatnymi narzędziami. Pierwsze z nich to „Ciągi sąsiadujące”, pozwalające czasem na umieszczenie wiadomości w kontekście lub przypomnienie sobie tłumaczenia zbliżonych tekstów. „Komentarze” to po prostu miejsce na skomentowanie tłumaczenia, z możliwością oznaczania zarówno innych tłumaczy, jak i osób tworzących aplikację. „Automatyczne sugestie” to tłumaczenia pochodzące z serwisu LibreTranslate oraz podsuwane na podstawie pamięci tłumaczeń, w której wyszukiwane są tłumaczenia podobnych ciągów. W „Innych językach” możemy sprawdzić, jak ten ciąg był przełożony w innych wersjach językowych, co jest przydatne raczej tylko dla osób posługujących się wieloma językami, a karta „Historia” pozwala na prześledzenie zmian w tłumaczeniu: kto, jak i kiedy przełożył ciąg.</p>



<p>W kolumnie po prawej, poza wspomnianym już odnośnikiem do pliku źródłowego, znajdują się informacje dotyczące ciągu, w tym data powstania i ostatniej aktualizacji. Powyżej znajduje się funkcja, której jeszcze nigdy nie użyłem, czyli „Słownik”, który pozwala na zapisanie własnych terminów, co pewnie jest bardzo przydatne zwłaszcza przy tłumaczeniu aplikacji używającej jakiejś zaawansowanej terminologii, gdy musimy pamiętać specjalistyczne słownictwo.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="crowdin">Crowdin</h3>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54.png" data-lbwps-width="1550" data-lbwps-height="1009" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54-500x325.png"><img loading="lazy" decoding="async" width="500" height="325" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54-500x325.png" alt="Interfejs serwisu Crowdin w czasie tłumaczenia aplikacji Pixelix." class="wp-image-15782" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54-500x325.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54-1024x667.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54-768x500.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54-1536x1000.png 1536w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-04-19-40-54.png 1550w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Tłumaczenie w Crowdin.</figcaption></figure>



<p>Muszę przyznać, że nie jestem fanem Crowdin i jego interfejs uważam za mniej wygodny niż Weblate. Jak widać na zrzucie powyżej, bardzo różni się od tego drugiego serwisu, ale po przyjrzeniu się rozpoznacie podobne elementy. Lewa strona to przeglądarka ciągów (można przełączyć ją na przeglądanie plików) z opcjami ich filtrowania i sortowania.</p>



<p>Część środkowa to ciąg źródłowy z kontekstem (i możliwością zapytania o niego) oraz miejsce na tłumaczenie. Poniżej znajdują się informacje o tłumaczeniu oraz sugestie z&nbsp;pamięci tłumaczeń oraz tłumaczenia maszynowego Crowdin Translate. Jest też możliwość podejrzenia wersji w innych językach.</p>



<p>Prawa strona to miejsce na komentarze tłumaczy, w tym przypadku proszących o&nbsp;zmianę, gdyż forma, w&nbsp;jakiej ciąg występuje w aplikacji, nie działa w&nbsp;ich językach.</p>



<p>Zamiast komentarzy można włączyć panel przeszukiwania pamięci tłumaczeń, słownika i&nbsp;kontekstu, oraz asystenta AI (ha, tfu!).</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="pliki">Tłumaczenie poprzez edycję plików</h2>



<p>Tu już mamy do czynienia z trochę bardziej zaawansowanym tematem, bo takie tłumaczenie wymaga znajomości podstaw obsługi repozytoriów git i gotowości do posługiwania się trybem tekstowym. Konieczność sięgnięcia po ten tryb tłumaczenia pojawia się zwłaszcza w przypadku młodych projektów, które nie dorobiły się jeszcze integracji z np. Weblate.</p>



<p>Zanim zabierzemy się za jakiekolwiek dłubanie, warto sprawdzić, czy aplikacja w ogóle jest przetłumaczalna, czyli osoby ją tworzące napisały ją w sposób pozwalający na wyświetlanie różnych wersji językowych. Najprościej to zrobić rozglądając się w&nbsp;repozytorium kodu programu za katalogiem z plikami tłumaczeń.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42.png" data-lbwps-width="1302" data-lbwps-height="577" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42-500x222.png"><img loading="lazy" decoding="async" width="500" height="222" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42-500x222.png" alt="Repozytorium programu Tonearm w serwisie Codeberg." class="wp-image-15418" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42-500x222.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42-1024x454.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42-768x340.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-03-05-10-28-42.png 1302w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Repozytorium Tonearm w widocznym katalogiem z plikami tłumaczeń.</figcaption></figure>



<p>Jeżeli aplikacja korzysta z gettext, czyli najpopularniejszego systemu tworzenia wielojęzycznego oprogramowania, to katalog ten najczęściej nazywa się po prostu <code>po</code>, ale spotkałem też np. <code>i18n</code> oraz <code>l10n</code>.</p>



<p class="info">Te dwa ostanie ciągi znaków to sprytne skróty oznaczające <em>internationalization</em> oraz <em>localization</em>, a cyferki w nich to po prostu liczba znaków między pierwszą a ostatnią literą.</p>



<p>Jeżeli nie znajdziecie żadnego śladu po wersjach językowych w kodzie aplikacji, to jedyne, co możecie zrobić, to skontaktowanie się z osobami ją rozwijającymi i&nbsp;zasugerowanie dodania obsługi wielu języków. Najprościej to zrobić przez dodanie <em>Issue</em> na stronie projektu, najlepiej z tagiem <em>Enhancement</em>.</p>



<p>Jeśli jednak aplikacja okaże się przekładalna, możemy brać się za tłumaczenie. Żeby to zrobić, trzeba zacząć od stworzenia własnej kopii repozytorium, czyli zrobienia forka, do czego będziemy potrzebować konta w serwisie, w którym jest rozwijany dany program (np. <a href="https://codeberg.org">Codebergu</a>, <a href="https://github.com/">GitHubie</a> lub <a href="https://gitlab.com/">GitLabie</a>).</p>



<p class="info">W tej części będę sporo posługiwać się systemem kontroli wersji o nazwie Git. Pozwala on na zapanowanie nad zmianami w kodzie i np. cofanie ich, jeżeli były błędne, a także tworzenie gałęzi, w których trwa rozwój różnych funkcjonalności i późniejsze ich scalanie. Większość rzeczy będzie można załatwić przez interfejsy WWW, ale jeżeli spróbujecie obsługi z linii poleceń, możecie uznać, że jest dużo wygodniejsza i szybsza. W poznaniu obsługi git mogą pomóc gry w rodzaju <a href="https://ohmygit.org/">Oh My Git!</a>, <a href="https://learngitbranching.js.org/">Learn Git Branching</a> czy <a href="https://www.gitmastery.me">GitMastery</a>.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Jak wygląda przebieg tłumaczenia pokażę na przykładzie Blood Pressure, aplikacji, którą znalazłem niedawno na <a href="http://flathub.org/pl/apps/org.tabos.bloodpressure">Flathub.org</a>, po tym, jak lekarz kazał mi przez tydzień mierzyć ciśnienie i zapisywać wyniki.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-23-14.png" data-lbwps-width="850" data-lbwps-height="650" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-23-14-500x382.png"><img loading="lazy" decoding="async" width="500" height="382" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-23-14-500x382.png" alt="Okno programu Blood Pressure z aktywną zakładką „Wpis”. Pola formularza to: Skurczowe, Rozkurczowe, Puls, Notatka oraz Data i czas." class="wp-image-15420" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-23-14-500x382.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-23-14-768x587.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-23-14.png 850w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Okno aplikacji</figcaption></figure>



<p>Po zalogowaniu na gitlab.com i przejściu do <a href="https://gitlab.com/tabos/blood-pressure/">strony projektu</a> klikam na przycisk <em>Fork</em> w&nbsp;prawym górnym rogu, po czym wypełniam krótki formularz. Zazwyczaj po prostu dodaję litery PL do nazwy repozytorium i informację w rodzaju „Polish translation” do opisu, tym razem się rozpisałem trochę bardziej</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-08-49-24.png" data-lbwps-width="988" data-lbwps-height="681" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-08-49-24-500x345.png"><img loading="lazy" decoding="async" width="500" height="345" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-08-49-24-500x345.png" alt="Tworzenie forka programu Blood Pressure w serwisie GitLab." class="wp-image-15421" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-08-49-24-500x345.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-08-49-24-768x529.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-08-49-24.png 988w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Tworzenie forka na GitLabie</figcaption></figure>



<p>W tym momencie mam już swoje repozytorium i mogę zabierać się od razu za tłumaczenie. Mógłbym to zrobić przez edycję plików przy użyciu interfejsu GitLaba, ale wygodniej mi będzie pracować na plikach na dysku.</p>



<p>Jeżeli chcecie uniknąć pracy w terminalu, gdzie się tylko da, to po kliknięciu zielonego przycisku <em>Code</em> wybieracie opcję <em>Download ZIP</em>, to jednak oznacza, że stworzone i&nbsp;zmodyfikowane pliki będziecie trzeba wgrywać przez przeglądarkę.</p>



<p>Jeśli wybierzecie tryb tekstowy, to repozytorium klonuje się poleceniem <code>git clone</code>, po którym można podać albo adres sieciowy repozytorium w rodzaju </p>



<pre class="wp-block-code"><code>git clone https://gitlab.com/LukaszH77/cisnienie-krwi.git</code></pre>



<p>albo SSH</p>



<pre class="wp-block-code"><code>git clone git@gitlab.com:LukaszH77/cisnienie-krwi.git</code></pre>



<p>Ta druga opcja jest na dłuższą metę wygodniejsza, ale wymaga konfiguracji kluczy SSH w systemie oraz w serwisie z repozytorium. Ten wpis i tak będzie bardzo długi, więc nie podejmę się w nim jeszcze tłumaczenia działania i tworzenia kluczy SSH. Zarówno <a href="https://docs.gitlab.com/user/ssh/">GitLab</a>, jak i <a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh">GitHub</a> oraz <a href="https://docs.codeberg.org/security/ssh-key/">Codeberg</a> mają tę procedurę opisaną krok po kroku.</p>



<p>W końcu mamy pliki na dysku i można się przyjrzeć, z czym będziemy pracować.</p>



<p class="info">Tłumaczenia przy użyciu systemu gettext opierają się na kilku rodzajach plików. POTFILES (lub <code>POTFILES.in)</code> zawiera listę plików źródłowych, w których znajdują się przetłumaczalne ciągi, a <code>LINGUAS</code> to lista języków, na które przetłumaczono aplikację. Plik z rozszerzeniem .pot (zazwyczaj <code>nazwa_programu.pot</code>) to wygenerowany przez gettext szablon tłumaczenia i na jego podstawie powstają pliki .po z konkretnymi wersjami językowymi (np. <code>pl.po</code> dla polskiego, <code>pt_BR.po</code> dla brazylijskiej wersji portugalskiego itd.).</p>



<p>W przypadku Blood Pressure nie było tego pierwszego pliku, więc postanowiłem przy okazji uzupełnić ten brak. Po jego przygotowaniu mogłem wygenerować szablon tłumaczenia poleceniem</p>



<pre class="wp-block-code"><code>xgettext --from-code=UTF-8 --keyword=_ --keyword=C_:1c,2 --output=po/blood-pressure.pot -f po/POTFILES</code></pre>



<p class="info">Parametry użyte w tym poleceniu wskazują jak jest kodowany plik, jak oznaczane w kodzie są przetłumaczalne ciągi, jak ma nazywać się tworzony plik .pot oraz z jakiej listy ma skorzystać.</p>



<p>Na podstawie szablonu plik z tłumaczeniem tworzy się komendą</p>



<pre class="wp-block-code"><code>msginit --locale=pl --input=blood-pressure.pot</code></pre>



<p>wydanym w podkatalogu <code>po</code>. </p>



<p class="info"><code>--locale=pl</code> oznacza oczywiście, że generujemy plik dla języka polskiego, a <code>--input=blood-pressure.pot</code> wskazuje na plik szablonu tłumaczeń.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35.png" data-lbwps-width="1221" data-lbwps-height="725" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35-500x297.png"><img loading="lazy" decoding="async" width="500" height="297" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35-500x297.png" alt="Okno emulatora terminala z wynikiem polecenia tworzącego plik po z polskim tłumaczeniem." class="wp-image-15423" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35-500x297.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35-1024x608.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35-768x456.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-09-21-35.png 1221w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Tworzenie pliku polskiego tłumaczenia</figcaption></figure>



<p>Po jej uruchomieniu zostaniemy zapytanie o adres e-mail, który ma być podany w pliku jako adres tłumacza. Po wpisaniu adresu i zatwierdzeniu powinien powstać plik pl.po, w&nbsp;którym będziemy wpisywali polskie tłumaczenie. Zanim się za to zabierzecie, warto najpierw otworzyć plik <code>LINGUAS</code> i dopisać <code>pl</code> w osobnym wierszu tak, żeby zachować alfabetyczną kolejność wpisów.</p>



<p>Tłumaczenie można załatwić w jakimkolwiek edytorze tekstu, ponieważ pliki .po są plikami tekstowymi o określonej, dość prostej strukturze. Wiersze zaczynające się od <code>msgid</code> zawierają oryginalny tekst, a w liniach poprzedzonych <code>msgstr</code> wpisujemy tłumaczenie. Każda taka para jest poprzedzona komentarzem zawierającym ścieżkę do pliku i numer linii, w której występuje ciąg, co przydaje się, gdy chcemy sprawdzić kontekst, w jakim się pojawia.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28.png" data-lbwps-width="1074" data-lbwps-height="769" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28-500x358.png"><img loading="lazy" decoding="async" width="500" height="358" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28-500x358.png" alt="Okno edytora tekstu z otworzonym plikiem pl.po zawierającym tłumaczenie programu Blood Pressure." class="wp-image-15425" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28-500x358.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28-1024x733.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28-768x550.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-07-15-34-28.png 1074w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Plik tłumaczenia otworzony w edytorze tekstu</figcaption></figure>



<p>Są jednak wygodniejsze sposoby na tłumaczenie plików .po, moim ulubionym jest program Gtranslator, który powstał na potrzeby tłumaczenia GNOME (o czym więcej napiszę w dalszej części). Można go zainstalować <a href="https://flathub.org/pl/apps/org.gnome.Gtranslator">z Flathuba</a>.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/obraz.png" data-lbwps-width="1349" data-lbwps-height="904" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/obraz-500x335.png"><img loading="lazy" decoding="async" width="500" height="335" src="https://horodecki.net/wp-content/uploads/2026/04/obraz-500x335.png" alt="Okno programu Gtranslator z otworzonym plikiem tłumaczenia programu Blood Pressure." class="wp-image-15426" srcset="https://horodecki.net/wp-content/uploads/2026/04/obraz-500x335.png 500w, https://horodecki.net/wp-content/uploads/2026/04/obraz-1024x686.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/obraz-768x515.png 768w, https://horodecki.net/wp-content/uploads/2026/04/obraz.png 1349w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Okno edytora tłumaczeń</figcaption></figure>



<p>Interfejs Gtranslatora jest dość prosty. Główna część okna to lista ciągów i ich tłumaczeń, które wpisuje się w polu na dole. To, co nas interesuje w tej chwili w panelu po prawej, to pola „Wydobyte komentarze” gdzie trafiają informacje dołączone przez osoby tworzące program oraz „Ścieżki” zawierające dane o&nbsp;tym, w jakim pliku i&nbsp;wierszu występuje wybrany komunikat.</p>



<p>Polecam zapoznanie się ze skrótami klawiszowymi (np. <kbd>Alt</kbd> + <kbd>-&gt;</kbd> to następny komunikat, a <kbd>Alt</kbd> + <kbd>Page Down</kbd> przechodzi do następnej nieprzetłumaczonej wiadomości), dzięki którym poruszanie się po pliku jest szybkie i wygodne.</p>



<p>Po przygotowaniu tłumaczenia trzeba je wrzucić do naszego repo. Jako że sklonowałem repozytorium przy użyciu <code>git clone</code>, to teraz mogę załatwić to wygodnie w terminalu. Najpierw przy pomocy <code>git add</code> dodaję po kolei pliki (całość zmian można od razu dodać komendą <code>git add .</code>), które utworzyłem lub zmodyfikowałem, a potem poleceniem <code>git commit -m "Opis zmian"</code> tworzę zatwierdzenie. Na koniec zostaje użycie <code>git push</code> do wypchnięcia zmian do zdalnego repozytorium na GitLabie.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05.png" data-lbwps-width="1221" data-lbwps-height="725" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05-500x297.png"><img loading="lazy" decoding="async" width="500" height="297" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05-500x297.png" alt="Terminal z poleceniami dodającymi zmienione pliki i tworzącymi zatwierdzenie, a potem wypychającymi zmiany do zdalnego repozytorium git." class="wp-image-15427" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05-500x297.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05-1024x608.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05-768x456.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-23-05.png 1221w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Dodawanie plików, zatwierdzanie zmian i wypychanie do zdalnego repozytorium git</figcaption></figure>



<p>Jeżeli zamiast klonować repozytorium pobraliście tylko archiwum zip i pracowaliście na wypakowanych plikach, wszystkie te, które stworzyliście i zmieniliście, musicie teraz przez interfejs WWW wgrać do odpowiednich katalogów, co w przypadku GitLaba załatwia się nawigując po drzewie plików, a po wybraniu właściwego miejsca klikając na ikonkę plusa i wybierając pozycję „Upload file”. Oczywiście także w tym wypadku trzeba będzie podać opis zmiany.</p>



<p>Ostatni krok to wysłanie zmian do oryginalnego repozytorium programu. Na stronie mojego forka klikam „Create merge request” i w formularzu, który się wyświetli mogę opisać na czym polegają zmiany. </p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26.png" data-lbwps-width="1353" data-lbwps-height="790" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26-500x292.png"><img loading="lazy" decoding="async" width="500" height="292" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26-500x292.png" alt="Formularz „New merge request” z prośbą o dodanie moich zmian do głównego repozytorium programu." class="wp-image-15430" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26-500x292.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26-1024x598.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26-768x448.png 768w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-02-10-38-26.png 1353w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Formularz merge request</figcaption></figure>



<p>Zazwyczaj załatwiam to wcześniej, już w wiadomości dołączonej do zatwierdzenia zmienianych plików i na tej podstawie wypełniany automatycznie jest tytuł <em>merge request</em>, więc muszę tylko zatwierdzić wysłanie oraz zaczekać aż osoby rozwijające aplikację przejrzą moje zmiany i je zatwierdzą.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-03-17-45-38.png" data-lbwps-width="671" data-lbwps-height="430" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-03-17-45-38-500x320.png"><img loading="lazy" decoding="async" width="500" height="320" src="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-03-17-45-38-500x320.png" alt="Informacja o zatwierdzeniu mojego merge requestu przez osobę tworzącą program Blood Pressure." class="wp-image-15431" srcset="https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-03-17-45-38-500x320.png 500w, https://horodecki.net/wp-content/uploads/2026/04/Zrzut-ekranu-z-2026-04-03-17-45-38.png 671w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Informacja o zatwierdzeniu merge request</figcaption></figure>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="gnome">Praca w&nbsp;polskim zespole GNOME</h2>



<p>Właśnie zobaczyłem, że wpis przekroczył już 2,5k słów, więc postaram się tę ostatnią część ograniczyć do minimum.</p>



<p>Jak już nabierzecie trochę doświadczenia przy tłumaczeniu różnych aplikacji, to zapraszam do ekipy tłumaczącej na język polski środowisko GNOME z przylegającymi aplikacjami. Praca tutaj trochę się różni od tej, którą pokazywałem powyżej. Trzeba zacząć od założenia konta w serwisie <a href="https://l10n.gnome.org/">Damned Lies</a>, zwanego w skrócie DL. Niestety nie można zrobić tego bezpośrednio, tylko trzeba do tego użyć SSO z np. GitLaba lub GitHuba.</p>



<p>Następnym krokiem jest dołączenie do <a href="https://l10n.gnome.org/teams/pl/">polskiego zespołu</a>. Zespół jest w trakcie reorganizacji, która nałożyła się na natłok pracy przy wydaniu GNOME 50, ale nowa koordynatorka to osoba bardzo dynamiczna i sprawy idą w dobrą stronę. Dorobiliśmy się już <a href="https://discourse.gnome.org/c/international/polish/511">forum</a> na oficjalnym Discourse GNOME oraz kanału <a href="https://matrix.to/#/%23gnome-pl:gnome.org">Matrix</a>, który jest najlepszym sposobem na komunikację z resztą zespołu i zadawanie pytań związanych z&nbsp;tłumaczeniem.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/obraz-1.png" data-lbwps-width="1169" data-lbwps-height="864" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/obraz-1-500x370.png"><img loading="lazy" decoding="async" width="500" height="370" src="https://horodecki.net/wp-content/uploads/2026/04/obraz-1-500x370.png" alt="Okno przeglądarki ze stroną polskiego zespołu tłumaczącego GNOME z namiarami na czat na Matriksie, forum  Discourse oraz do zgłaszania błędów. Po prawej jest informacja o osobie koordynującej, a poniżej lista modułów." class="wp-image-15456" srcset="https://horodecki.net/wp-content/uploads/2026/04/obraz-1-500x370.png 500w, https://horodecki.net/wp-content/uploads/2026/04/obraz-1-1024x757.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/obraz-1-768x568.png 768w, https://horodecki.net/wp-content/uploads/2026/04/obraz-1.png 1169w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Strona polskiego zespołu tłumaczenia GNOME</figcaption></figure>



<p>Jeżeli mamy wybrany moduł, który chcemy przetłumaczyć, pracę nad nim <strong>trzeba zacząć od zarezerwowania go do tłumaczenia</strong> poprzez formularz na stronie modułu. Możemy przy okazji dopisać komentarz, chociaż nie jest to konieczne. Potem pobieramy plik PO i zabieramy się za tłumaczenie.</p>



<p>Do tłumaczenia najlepiej wykorzystać Gtranslatora, którego polecałem wyżej. Można go połączyć ze swoim kontem na Damned Lies (po wpisaniu w danych profilu naszego tokenu z DL), co teoretycznie pozwoli na pobieranie i wgrywanie plików (chociaż ja wolę załatwiać to przez strony modułów, bo mogę od razu np. wyklikać rezerwację). Bardziej ciekawą możliwością jest pamięć tłumaczeń, którą można sobie zbudować na podstawie innych tłumaczeń zespołu.</p>



<p>Dzięki skryptowi udostępnionemu przez brazylijską ekipę przygotowałem zbiorczy plik .po z całości tłumaczeń przygotowanych dla GNOME50 i <a href="https://codeberg.org/LukaszH77/i18n/src/branch/main/Translation%20Memory">udostępniam go</a> na swoim koncie na Codebergu. Po ściągnięciu pliku trzeba jego położenie wskazać Gtranslatorowi (Menu główne -&gt; Zbuduj pamięć tłumaczeń). Od tej chwili w panelu po prawej będziecie mieli podpowiedzi tłumaczeń podobnych ciągów.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/04/obraz-3.png" data-lbwps-width="1349" data-lbwps-height="904" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/04/obraz-3-500x335.png"><img loading="lazy" decoding="async" width="500" height="335" src="https://horodecki.net/wp-content/uploads/2026/04/obraz-3-500x335.png" alt="Okno programu Gtranslator z tłumaczeniem programu Constrict. Po prawej stronie wyświetlają się podpowiedzi dobierane na podstawie pamięci tłumaczeń." class="wp-image-15459" srcset="https://horodecki.net/wp-content/uploads/2026/04/obraz-3-500x335.png 500w, https://horodecki.net/wp-content/uploads/2026/04/obraz-3-1024x686.png 1024w, https://horodecki.net/wp-content/uploads/2026/04/obraz-3-768x515.png 768w, https://horodecki.net/wp-content/uploads/2026/04/obraz-3.png 1349w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Podpowiedzi tłumaczeń w panelu Gtranslator</figcaption></figure>



<p>Po skończeniu tłumaczenia i zapisaniu pliku otwieramy znowu stronę modułu i w formularzu wybieramy opcję „Wyślij nowe tłumaczenie” i wgrywamy plik. Takie tłumaczenie musi zostać przejrzane przez osobę z uprawnieniami do recenzowania i jeżeli będzie poprawne, to zostanie zatwierdzone i wypchnięte do repozytorium.</p>



<p>Może się zdarzyć, że zamiast tego dostaniemy recenzję z informacjami, które ciągi mają błędy i jak je należy poprawić tak, by spełniały standardy zespołu. Aby ograniczyć prawdopodobieństwo poprawek, warto pamiętać m.in. o tym, że po każdym jednoliterowym spójniku (a, i, o, u, w, z) powinna znaleźć się niełamliwa spacja (wstawiana za pomocą <kbd>Prawy alt</kbd> + <kbd>Spacja</kbd>), dzięki czemu przy dzieleniu tekstu na wiersze, na ich końcu nie będą wisieć pojedyncze litery.</p>



<p>Zespół planuje przygotowanie wytycznych dotyczących tłumaczenia (np. preferowanych form gramatycznych dla różnych elementów interfejsu oraz używania form neutralnych płciowo) i gdy będą gotowe, to je tutaj podczepię, ale na razie warto przyjrzeć się temu, jak wyglądają dotychczasowe tłumaczenia, a w razie wątpliwości zapytać w naszym pokoju Matrix.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Myślę, że to najwyższy czas, żeby zakończyć ten wpis i cały cykl. Mam nadzieję, że pokazując tyle różnych sposobów na zaangażowanie się w FOSS uda mi się namówić do tego chociaż jedną osobę. </p>



<p>Jeżeli macie jakieś pytania dotyczące poruszonych w tych wpisach zagadnień, lub uważacie, że podane przeze mnie informacje wymagają uzupełnienia, a być może są błędne, to proszę dajcie znać w komentarzach. Z chęcią poznam wasze zdanie i&nbsp;uzupełnię swoje braki w wiedzy.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horodecki.net/2026/04/09/tlumaczenie-wolnego-i-otwartego-oprogramowania/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Kolejne sposoby na wejście do społeczności FOSS</title>
		<link>https://horodecki.net/2026/03/15/kolejne-sposoby-na-wejscie-do-spolecznosci-foss/</link>
					<comments>https://horodecki.net/2026/03/15/kolejne-sposoby-na-wejscie-do-spolecznosci-foss/#respond</comments>
		
		<dc:creator><![CDATA[silva rerum]]></dc:creator>
		<pubDate>Sun, 15 Mar 2026 14:31:13 +0000</pubDate>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Nerdzenie]]></category>
		<category><![CDATA[advocacy]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[kompilacja]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[społeczność]]></category>
		<category><![CDATA[testowanie]]></category>
		<category><![CDATA[WiOO]]></category>
		<category><![CDATA[wsparcie]]></category>
		<category><![CDATA[zgłaszanieBłędów]]></category>
		<guid isPermaLink="false">https://horodecki.net/?p=13469</guid>

					<description><![CDATA[Druga część wpisu zachęcającego do dołączenia do społeczności Wolnego i Otwartego Oprogamowania.]]></description>
										<content:encoded><![CDATA[
<p id="foss2">To druga część wpisu, w którym zachęcam do dołączenia do społeczności tworzącej Wolne i Otwarte Oprogramowanie. W <a href="https://horodecki.net/2026/03/08/zapraszam-do-spolecznosci-wolnego-i-otwartego-oprogramowania/">pierwszym odcinku</a> opowiedziałem czym jest WiOO i pokazałem, jak można się zaangażować jako osoba programująca, tworząca dokumentację, zgłaszająca błędy i podsuwająca pomysły na nowe funkcjonalności. Ten będzie poświęcony testowaniu aplikacji w czasie ich powstawania, pomaganiu innym użytkownikom oraz wspieraniu osób tworzących FOSS, a w trzecim opowiem o tłumaczeniu aplikacji.</p>



<h2 class="wp-block-heading" id="spis-treści">Spis treści</h2>



<ul class="wp-block-list">
<li><a href="#testowanie">Testowanie wersji rozwojowych aplikacji</a>
<ul class="wp-block-list">
<li><a href="#nightly">Wydania nightly</a></li>



<li><a href="#builder">Przy użyciu GNOME Buildera</a></li>



<li><a href="#recznie">Z ręcznym budowaniem pakietów flatpak</a></li>



<li><a href="#galaz">Kod spoza głównej gałęzi repozytorium</a></li>



<li><a href="#jak">Jak testować?</a></li>
</ul>
</li>



<li><a href="#pomaganie" data-type="internal" data-id="#wsparcie">Pomaganie innym osobom używającym WiOO i&nbsp;advocacy</a></li>



<li><a href="#finanse">Wsparcie finansowe osób rozwijających FOSS</a></li>
</ul>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="testowanie">Testowanie wersji rozwojowych aplikacji</h2>



<p>O wyłapywaniu błędów w czasie używania programów i&nbsp;ich zgłaszaniu pisałem w&nbsp;pierwszej części, tym razem opowiem o używaniu niewydanych jeszcze wersji, samodzielnym budowaniu i instalowaniu oprogramowania prosto z&nbsp;repozytorium, po to, by przetestować nowe funkcje i wychwycić błędy jeszcze zanim program zostanie udostępniony zwykłym użytkownikom.</p>



<p>To zagadnienie bardziej zaawansowane, wymagające umiejętności korzystania z&nbsp;trybu tekstowego i instalowania potrzebnych programów i bibliotek. Jeżeli jeszcze nie masz tych umiejętności w swoim repertuarze, to może być właśnie dobra okazja na uzupełnienie braków.</p>



<p>O ile stosunkowo często zdarza mi się zgłaszanie błędów w różnych programach, to za testowanie wersji rozwojowych biorę się tylko w przypadku programów, które naprawdę lubię i rozwijają się na tyle szybko między wydaniami, żeby było warto sprawdzać, co ciekawego się w nich dzieje.</p>



<p>Robiłem tak np. z <a href="https://flathub.org/en/apps/dev.geopjr.Tuba">Tubą</a> (klientem fediwersum), <a href="https://flathub.org/en/apps/org.scratchmark.Scratchmark">Scratchmarkiem</a> (edytorem Markdown, w którym piszę wszystkie teksty na bloga), a ostatnio z <a href="https://flathub.org/en/apps/dev.dergs.Tonearm">Tonearm</a>, natywnym klientem Tidala.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-39-36.png" data-lbwps-gid="6" data-lbwps-width="959" data-lbwps-height="944" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-39-36-500x492.png"><img loading="lazy" decoding="async" width="500" height="492" data-id="14795" src="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-39-36-500x492.png" alt="Okno klienta Fediwersum Tuba z otwartym profilem tego bloga. Obrazek nagłówka to mój ciemnoniebieski rower szutrowy stojący na tle żelbetonowego tunelu w poradzieckiej bazie głowic atomowych. Na zdjęciu profilowym patrzę prosto w kamerę i mam na głowie czerwony kask rowerowy i przyciemniane okulary." class="wp-image-14795" srcset="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-39-36-500x492.png 500w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-39-36-768x756.png 768w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-39-36.png 959w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47.png" data-lbwps-gid="6" data-lbwps-width="1164" data-lbwps-height="971" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47-500x417.png"><img loading="lazy" decoding="async" width="500" height="417" data-id="14794" src="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47-500x417.png" alt="Okno edytora Scratchmark z otwartym szkicem tego tekstu. Po lewej panel biblioteki z kategoriami tekstów: m. in.  jedzenie, nerdzenie, rowerowanie i w trakcie." class="wp-image-14794" srcset="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47-500x417.png 500w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47-1024x854.png 1024w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47-768x641.png 768w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-41-47.png 1164w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35.png" data-lbwps-gid="6" data-lbwps-width="1242" data-lbwps-height="878" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35-500x353.png"><img loading="lazy" decoding="async" width="500" height="353" data-id="14793" src="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35-500x353.png" alt="Album „The Medieval Drone Society II” Laury Cannell w Tonearm. " class="wp-image-14793" srcset="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35-500x353.png 500w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35-1024x724.png 1024w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35-768x543.png 768w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-21-42-35.png 1242w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">„silva rerum” w Tubie, ten wpis w Scratchmark i&nbsp;grający mi przy pisaniu Tonearm</figcaption></figure>



<p>Wymaga to trochę więcej pracy niż zwykłe używanie i&nbsp;ewentualne zgłaszanie zauważonych błędów, ale jest też bardzo satysfakcjonujące, zwłaszcza jeżeli jest się osobą, którą cieszy zdobywanie nowych umiejętności i lubi dłubać w&nbsp;terminalu.</p>



<p>Wiadomości, którymi się poniżej podzielę, pewnie będą banalne dla bardziej zaawansowanych, ale sam nieraz musiałem się naszukać i nadłubać, zanim załapałem co i jak. Przyznaję, że mimo zebranego doświadczenia i tak zdarza się, że w niektórych przypadkach działam trochę po omacku, co zresztą jest dla mnie sporą częścią frajdy, jaką mam z tej całej zabawy.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="nightly">Korzystanie z wydań niestabilnych</h3>



<p>Zanim zabierzecie się za samodzielne budowanie niewydanych jeszcze wersji programów, sprawdźcie czy czasem osoby tworzące aplikację nie udostępniają wydań niestabilnych, często budowanych codziennie. Jeżeli się nie mylę, to Firefox wprowadził nazwę <em>nightly</em> na takie wydania i&nbsp;od tego czasu widuję ją używaną w innych projektach.</p>



<p>Czasem nie są dostępne w jakimś rzucającym się w oczy miejscu na stronie projektu, tylko trzeba się do nich doklikać. W przypadku Tonearm osoby rozwijające program włączyły automatyczne budowanie pakietów, do których można się dostać po wybraniu interesującej nas zmiany w repozytorium w sekcji <em>Actions</em>.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/obraz-1.png" data-lbwps-width="1640" data-lbwps-height="591" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/obraz-1-500x180.png"><img loading="lazy" decoding="async" width="500" height="180" src="https://horodecki.net/wp-content/uploads/2026/03/obraz-1-500x180.png" alt="Fragment strony projektu Tonearm w serwisie Codeberg. Otwarty wynik akcji oznaczonej jako „Fix mpris fetching low quality album cover” daje dostęp do pobrania pliku dev.dergs.Tonearm-x86_64.flatpak." class="wp-image-14852" srcset="https://horodecki.net/wp-content/uploads/2026/03/obraz-1-500x180.png 500w, https://horodecki.net/wp-content/uploads/2026/03/obraz-1-1024x369.png 1024w, https://horodecki.net/wp-content/uploads/2026/03/obraz-1-768x277.png 768w, https://horodecki.net/wp-content/uploads/2026/03/obraz-1-1536x554.png 1536w, https://horodecki.net/wp-content/uploads/2026/03/obraz-1.png 1640w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Pakiet flatpak jako rezultat akcji w repozytorium Tonearm.</figcaption></figure>



<p>Takie rozwiązanie bardzo ułatwia życie osób chcących testować aplikacje w czasie ich rozwoju. Niestety, zazwyczaj nie jest dostępne i trzeba radzić sobie samodzielnie.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="builder">Budowanie przy pomocy GNOME Builder</h3>



<p>W wielu przypadkach, zwłaszcza gdy mowa o aplikacjach tworzonych dla ekosystemu GNOME, najłatwiej będzie do ich budowania i instalacji wykorzystać program GNOME Builder. To zintegrowane środowisko programistyczne (IDE) najprościej zainstalować <a href="https://flathub.org/pl/apps/org.gnome.Builder">z Flathuba</a>.</p>



<p>Po odpaleniu Buildera otwiera się okno powitalne, w którym można stworzyć nowy projekt albo otworzyć znajdujący się już na dysku, ale nas interesuje pobranie źródeł programu z jego repozytorium, które umożliwia znajdujący się na dole okna przycisk „Sklonuj repozytorium…”.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-4.png" data-lbwps-width="1050" data-lbwps-height="850" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-4-500x405.png"><img loading="lazy" decoding="async" width="500" height="405" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-4-500x405.png" alt="Dialog klonowania repozytorium w GNOME Builder. Aktywne pole to „Adres URL repozytorium”, a poniżej są „Położenie” oraz „Author details” z miejscem na nazwę oraz email." class="wp-image-13487" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-4-500x405.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-4-1024x829.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-4-768x622.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-4.png 1050w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Klonowanie repozytorium w GNOME Builder.</figcaption></figure>



<p class="info">Dostępny w tej chwili Builder jest spolszczony w 36%, ale dopiero co skończyłem jego pełne tłumaczenie, które w tej chwili musi zostać przejrzane przez koordynatorkę zespołu przekładającego GNOME na język polski i po poprawkach będzie mogło zostać włączone do następnego wydania.</p>



<p>W następnym oknie wklejacie adres repozytorium i wybieracie, do jakiego folderu mają trafić źródła. Możecie tam też podać swoje dane, na wypadek, gdybyście chcieli zmieniać kod i wysyłać poprawki.</p>



<p>Adres URL repozytorium ma formę <a href="https://serwis/autor/projekt.git">https://serwis/autor/projekt.git</a>. Na GitHubie schowany jest pod zielonym przyciskiem „Code”, a na GitLabie pod niebieskim. Po jego kliknięciu zobaczycie adres HTTPS, a obok ikonkę kopiowania go do schowka. Na Codebergu nie trzeba nic rozwijać, można od razu klikać przycisk kopiowania znajdujący się obok pola z adresem.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39.png" data-lbwps-gid="7" data-lbwps-width="1311" data-lbwps-height="696" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39-500x265.png"><img loading="lazy" decoding="async" width="500" height="265" data-id="13489" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39-500x265.png" alt="Strona Tuby na GitHubie z zaznaczonym przeze mnie czerwoną obwódką przyciskiem Code." class="wp-image-13489" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39-500x265.png 500w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39-1024x544.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39-768x408.png 768w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-39.png 1311w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15.png" data-lbwps-gid="7" data-lbwps-width="1311" data-lbwps-height="696" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15-500x265.png"><img loading="lazy" decoding="async" width="500" height="265" data-id="13488" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15-500x265.png" alt="Strona Tonearm na Codebergu z zaznaczonym czerwoną obwódka adresem repozytowium." class="wp-image-13488" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15-500x265.png 500w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15-1024x544.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15-768x408.png 768w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-03-13-36-15.png 1311w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Adresy repozytoriów na GitHubie i Codebergu.</figcaption></figure>



<p>Po zatwierdzeniu klonowania Builder pobierze źródła z głównej gałęzi programu i otworzy projekt. Dla osób niezaznajomionych z edytorami dla programistów interfejs Buildera może wydawać się nieprzyjazny i skomplikowany. Najważniejsze dla nas rzeczy kryją się na górze w centrum ekranu. Znajdziecie tam ikonkę młotka, która uruchamia budowanie projektu. Na prawo od niej jest strzałka w dół rozwijająca listę działań. Warto rozpocząć od kliknięcia „Update Dependencies…”, co zainstaluje pakiety potrzebne do zbudowania programu.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-5.png" data-lbwps-width="1374" data-lbwps-height="539" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-5-500x196.png"><img loading="lazy" decoding="async" width="500" height="196" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-5-500x196.png" alt="Dialog aktualizacji środowisk programistycznych w GNOME Builder" class="wp-image-13493" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-5-500x196.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-5-1024x402.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-5-768x301.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-5.png 1374w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Instalowanie środowisk programistycznych w GNOME Builder</figcaption></figure>



<p>Gdy ten proces zakończy się sukcesem, można kliknąć młotek lub wybrać „Zbuduj” z menu. W dolnej części ekranu zaczną wyświetlać się proces budowania, który powinien przelecieć bez problemów, o ile w systemie macie wszystkie potrzebne narzędzia. Czasem wywali się z informacją o nieznalezionym poleceniu czy bibliotece, wtedy będzie trzeba użyć narzędzia zarządzania oprogramowaniem waszej dystrybucji i doinstalować potrzebne rzeczy.</p>



<p>Jeżeli wszystko się powiedzie, to na pasku na lewo od młotka wyświetli się napis „Pomyślnie zbudowano”. W tym momencie możecie kliknąć ikonkę trójkąta po prawej, by uruchomić program, co zazwyczaj wystarcza do testowania. Można też stworzyć pakiet flatpak, wybierając „Export” z menu.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="recznie">Ręczne budowanie</h3>



<p>Niektóre programy nie dawały mi się zbudować w powyższy sposób, całkiem możliwe, że przez mój brak umiejętności i wiedzy do tego potrzebnej. W takich wypadkach załatwiam to ręcznie. </p>



<p>Jeżeli nie macie kopii repozytorium utworzonej w Builderze, można to zrobić bez niego. Otwieramy terminal w katalogu, w którym ma znaleźć się kod źródłowy i używamy polecenia <code>git clone</code>. Na przykład w przypadku Tonearm to </p>



<pre class="wp-block-code"><code></code><code>git clone https://codeberg.org/dergs/Tonearm.git</code></pre>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-20-46-51.png" data-lbwps-width="943" data-lbwps-height="554" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-20-46-51-500x294.png"><img loading="lazy" decoding="async" width="500" height="294" src="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-20-46-51-500x294.png" alt="Okno terminala z wynikiem polecenia „git clone https://codeberg.org/dergs/Tonearm.git” wykonanego w katalogu ~/Programy." class="wp-image-14783" srcset="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-20-46-51-500x294.png 500w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-20-46-51-768x451.png 768w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-12-20-46-51.png 943w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Klonowanie repozytorium programu</figcaption></figure>



<p>Następny krok to sprawdzenie na stronie projektu, czy są tam zamieszczone instrukcje budowania/instalacji. Niekiedy znajdziecie tam dokładne polecenie i&nbsp;wystarczy je skopiować do terminala, by zbudować program, oczywiście, jeżeli macie zainstalowane wszystkie zależności.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/obraz-2.png" data-lbwps-width="891" data-lbwps-height="597" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/obraz-2-500x335.png"><img loading="lazy" decoding="async" width="500" height="335" src="https://horodecki.net/wp-content/uploads/2026/03/obraz-2-500x335.png" alt="Fragment README programu Mousam zawierający instrukcje budowania począwszy od zależności (python3-requests, build-essential, meson), przez kompilację i przy użyciu meson, aż p uruchomienie poleceniem mousam." class="wp-image-14854" srcset="https://horodecki.net/wp-content/uploads/2026/03/obraz-2-500x335.png 500w, https://horodecki.net/wp-content/uploads/2026/03/obraz-2-768x515.png 768w, https://horodecki.net/wp-content/uploads/2026/03/obraz-2.png 891w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Instrukcje budowania aplikacji pogodowej Mousam</figcaption></figure>



<p>Niektóre programy mają skrypty zajmujące się budowaniem i instalowaniem. Na przykład w katalogu <code>build-aux</code> źródeł Scratchmark  znajduje się skrypt <code>generate_flatpak.sh</code>, którego wywołanie buduje pakiet <code>Scratchmark.flatpak</code>, który można potem zainstalować poleceniem </p>



<pre class="wp-block-code"><code></code><code>flatpak install Scratchmark.flatpak --user</code></pre>



<p class="info">Opcja <code>--user</code> powoduje zainstalowanie pakietu wyłącznie dla aktywnego użytkownika. Dzięki temu jeżeli dzielimy komputer z innymi osobami, nie będą widziały w swoim menu potencjalnie niestabilnej wersji aplikacji.</p>



<p>Czasem jednak instrukcji nie ma i trzeba sobie radzić bez nich. Tak było właśnie w przypadku Tonearm, gdy zaczynałem kręcić się przy tej aplikacji. Na szczęście po wcześniejszych doświadczeniach wiedziałem, co zrobić. Rozejrzałem się za zawierającym manifest budowania plikiem .json lub .yaml, który znalazłem w <code>build/flatpak</code>, a potem wydałem polecenie</p>



<pre class="wp-block-code"><code></code><code>flatpak-builder --force-clean --install-deps-from=flathub --user --install build dev.dergs.Tonearm.yaml</code></pre>



<p class="info">Dodanie <code>--install-deps-from=flathub</code> spowoduje, że brakujące zależności zostaną dociągnięte z repozytorium flathuba, a <code>--force-clean</code> usunie pliki wygenerowane w czasie poprzedniego budowania.</p>



<p>Jeżeli proces budowania i instalowania przebiegnie bez błędów, można się zabrać za testowanie.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="galaz">Kod spoza głównej gałęzi repozytorium</h3>



<p>Zazwyczaj opisane powyżej sposoby instalacji programów ze źródeł pobranych z&nbsp;repozytorium wystarczają do testowania wersji rozwojowej. Czasem jednak rozwój nowych funkcjonalności odbywa się poza główną gałęzią repo (najczęściej nazywającą się <code>main</code> lub <code>master</code>) i kod ją zawierający trafia do niej dopiero po doszlifowaniu. </p>



<p>Niektóre projekty mają stałą gałąź w rodzaju <code>dev</code> lub <code>devel</code>, w większości przypadków gałęzie powstają na potrzeby konkretnych zmian i&nbsp;mają zazwyczaj dość oczywiste nazwy, np. <code>feat/nowy-edytor</code> albo <code>fix/wycieki-pamieci</code>. Żeby przetestować taką wersję programu, trzeba przełączyć źródła na wybraną gałąź.</p>



<p>W Builderze po lewej stronie pola, w którym były wyświetlane komunikaty budowania aplikacji, znajduje się kolumna ikonek. Druga od góry przełącza na terminal, w którym wpisujemy polecenie <code>git switch</code>. Po naciśnięciu klawisza <code>TAB</code> pokaże się lista dostępnych gałęzi, na której odszukujemy tą, która nas interesuje i dopisujemy do polecenia</p>



<pre class="wp-block-code"><code>git switch feat/nowy-edytor</code></pre>



<p>Przy ręcznym budowaniu po prostu używamy tego samego polecenia w&nbsp;terminalu, po wejściu do katalogu ze źródłami. </p>



<p>Po przełączeniu na wybraną gałąź dalsze budowanie jest takie samo, jak opisałem powyżej.</p>



<p class="info">Jeżeli od sklonowania repozytorium do chwili budowania programu minęło trochę czasu, można je zaktualizować, pobierając zmienione pliki poleceniem <code>git pull</code> wydanym w główny katalogu repo, a ponowne przestawienie repozytorium z bocznej gałęzi na główną załatwiamy oczywiście poleceniem <code>git switch main</code>.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h3 class="wp-block-heading" id="jak">Jak testować?</h3>



<p>Niezależnie od tego, w jaki sposób zainstalowaliście testową wersje programu, testowanie wygląda tak samo. Najprostsza opcją jest po prostu używanie programu jak zazwyczaj, z jednoczesnym zwracaniem uwagi na zamykanie się aplikacji, skoki zajęcia pamięci, zamulenie, niedziałające elementy. Po natrafieniu na takie problemy zgłaszamy je w sekcji <em>Issues</em> strony programu, co opisałem już <a href="https://horodecki.net/2026/03/08/zapraszam-do-spolecznosci-wolnego-i-otwartego-oprogramowania/#zglaszanie-bledow">w poprzedniej części</a>. <strong>Pamiętajcie o wcześniejszym upewnieniu się, że problem jeszcze nie został zgłoszony.</strong></p>



<p>Bardziej zaawansowaną opcją jest sprawdzenie, co się zmieniło od ostatniego wydania i testowanie rzeczy z tej listy. Żeby to zrobić trzeba wejść na zakładkę Wydania (<em>Relases</em>) na stronie projektu i wybrać najnowsze, a po jego otwarciu poszukać odnośnika w rodzaju „15 commits to master since this release”, który otworzy stronę zawierające listę wszystkich zmian, które zaszły w repozytorium od tego czasu.</p>



<p>Lista, którą zobaczycie, może w pierwszej chwili może wydawać się nieczytelna i&nbsp;przytłaczająca, zwłaszcza jeżeli w repozytorium sporo się wydarzyło od czasu ostatniego wydania. Na szczęście da się to dość łatwo ogarnąć, o&nbsp;ile osoby rozwijające program dbają o&nbsp;sensowne opisywanie zmian.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/obraz.png" data-lbwps-width="1162" data-lbwps-height="488" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/obraz-500x210.png"><img loading="lazy" decoding="async" width="500" height="210" src="https://horodecki.net/wp-content/uploads/2026/03/obraz-500x210.png" alt="Lista zmian w repo programu Tonearm od czasu wydania wersji 1.4, a na niej m.in. „Make API / Resource Base URLs configurable”, „Translation update from Codeberg Translate” oraz „Fixed and issue where tonearm would use 100% CPU on playlist end”." class="wp-image-14788" srcset="https://horodecki.net/wp-content/uploads/2026/03/obraz-500x210.png 500w, https://horodecki.net/wp-content/uploads/2026/03/obraz-1024x430.png 1024w, https://horodecki.net/wp-content/uploads/2026/03/obraz-768x323.png 768w, https://horodecki.net/wp-content/uploads/2026/03/obraz.png 1162w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Lista zmian w repozytorium Tonearm</figcaption></figure>



<p>Zazwyczaj można zignorować aktualizacje tłumaczeń oraz zmiany oznaczane jako <code>chore</code>, które z reguły dotyczą np. aktualizacji zależności i podobnych zabiegów związanych z utrzymaniem kodu. Te, które nas interesują, często są mają oznaczenia <code>fix</code> dla zmian łatających błędy oraz <code>feat</code> dla dodających nowe funkcjonalności lub zmieniających działanie dotychczasowych.</p>



<p>Testowanie pierwszych jest bardziej oczywiste, zwłaszcza jeżeli dotyczy błędów, które zgłaszaliśmy. Odtwarzamy okoliczności, w których błąd występował i sprawdzamy, czy nadal tak się dzieje. Jeżeli jest już naprawiony, warto w komentarzu pod konkretną zmianą napisać, że poprawka zadziałała. Jeżeli błąd pojawia się nadal, tym bardziej warto dać o tym znać.</p>



<p>Te drugie pewnie są najbardziej atrakcyjne – ja sam mam wielką frajdę, gdy mogę używać rzeczy, które są jeszcze niedostępne dla osób korzystających tylko ze stabilnych wydań i często robię to jako pierwsza osoba po bezpośrednio zaangażowanych w rozwój programu. Poza sprawdzeniem, czy dodany/zmieniony element aplikacji działa tak, jak powinna, warto spojrzeć na to, jak łączy się z jej resztą i czy np. nie psuje używalności, albo jeżeli się sprawdza, czy nie pasowałby też w innych miejscach.</p>



<p><strong>Przykład 1</strong>: Niedawno do Scratchmark doszła możliwość zmiany rozmiaru tekstu w edytorze za pomocą skrótów <code>Ctrl</code>+ i <code>Ctrl</code><code>-</code>. Osoba rozwijająca Scratchmarka uznała, że skoro można ustawić rozmiar czcionki w ten sposób, to może usunąć ustawianie rozmiaru w preferencjach. Zgłosiłem w pokoju Matrix aplikacji, że IMHO to nie jest najlepszy pomysł, bo skoro możemy tam zmienić krój czcionki, to dziwne będzie, jeżeli nie będziemy mogli zmienić tam również jej rozmiaru. Za to jak najbardziej powinna się tam znaleźć informacja, że wielkość tekstu można zmienić też w czasie pisania za pomocą skrótów klawiszowych.</p>



<p><strong>Przykład 2</strong>: Zaproponowałem dodanie do Tonearm podglądu okładek albumów, co dość szybko zostało zrealizowane. Gdy przetestowałem wersję z tą zmianą odkryłem, że działa to wyłącznie po kliknięciu z okładkę obecnie odtwarzanego utworu, która i tak jest dość powiększona w panelu odtwarzacza, za to nie działa z okładkami na stronach albumów, jeżeli ich nie odtwarzamy, a tam przydałoby się bardziej, bo okładki są dużo mniejsze, więc słabiej widoczne. W tym przypadku również zasugerowałem zmianę na Matriksie.</p>



<p class="info">Matrix jest sposobem komunikacji popularnym w świecie FOSS. To taki Discord dla geeków – otwarty i niezależny od korporacji. Mniej wybajerzony, ale IMHO bardziej wygodny. Gorąco zachęcam do korzystania z niego, bo jest dobrym sposobem na bezpośrednią komunikację z osobami rozwijającymi WiOO, mniej formalną niż wypełnianie <code>issues</code> na stronach projektów. Jeżeli zdecydujecie się spróbować, to polecam polski serwer <a href="https://noevil.pl/matrix">noevil</a>, na którym mam swoje konto oraz klienta o nazwie <a href="https://flathub.org/en/apps/org.gnome.Fractal">Fractal</a>.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="pomaganie">Pomaganie innym osobom używającym WiOO i&nbsp;<em>advocacy</em></h2>



<p>Jeżeli propozycje, które przedstawiłem w poprzedniej części i&nbsp;powyżej to dla was za dużo zachodu, to teraz pokażę działalność, która w przeciwieństwie do powyższych nie wymaga dłubania, a&nbsp;jedynie chwili wolnego czasu.</p>



<p>Sporą częścią całego środowiska WiOO jest wzajemne pomaganie. Kiedyś było to dużo łatwiejsze, po prostu siedzieliśmy na usenetowej grupie (alt.pc.comp.os.linux.newbie na zawsze w moim sercu, jeżeli ktoś z a.p.c.o.l.n. to czyta, to pozdrawiam serdecznie) i w miarę możliwości odpowiadaliśmy na pytania, które się na niej pojawiały. Polecaliśmy programy, kompatybilny sprzęt, podpowiadaliśmy sposoby rozwiązywania problemów, dzieliliśmy się sztuczkami, skryptami, pisaliśmy FAQ itd.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26.png" data-lbwps-width="1203" data-lbwps-height="825" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26-500x343.png"><img loading="lazy" decoding="async" width="500" height="343" src="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26-500x343.png" alt="Okno emulatora terminala o nazwie Konsole z uruchomiona przeglądarką archiwów Usenetu tbrowser z archiwum grupy alt.pl.comp.os.linux.newbie. Górną cześć okna zajmuje lista postów z rozwiniętym drzewkiem posta „Instalacja Open Office w Mandrake 9.0”. Dolna cześć wyświetla moją odpowiedź z 10:41 30 października 2002. Zacytowałem fragment posta z pytaniem osoby Daruma: „Jak instaluje się Open Office z rpm-a w Mandrake 9.0 .” i odpowiedziałem „Najprościej:
1. Wybierz z menu &quot;Konfiguracja | Pakiety | Install Software&quot;
2. W polu wyszukiwania wpisz &quot;open&quot;
3. Wśród wyników wyszukiwania zaznacz pakiety zwiazane z open office (tylko te, które potrzebujesz)
4. Naciśnij &quot;Instaluj&quot;
5. Podawaj płytki, o które prosi.
6. Poczekaj aż zainstaluje i ciesz się :)”" class="wp-image-14771" srcset="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26-500x343.png 500w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26-1024x702.png 1024w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26-768x527.png 768w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-22-42-26.png 1203w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Mój najstarszy post na a.c.o.l.n, jaki znalazłem w <a href="https://usenet.nereid.pl/">Archiwum Polskiego Usenetu</a></figcaption></figure>



<p>Usenet niestety odszedł w niepamięć, ustępując pola forom dyskusyjnym, które z kolei prawie wyginęły po nastaniu czasu mediów społecznościowych i discordów, przetrwały chyba głównie w formie poświęconej konkretnym dystrybucjom, np. <a href="https://bbs.archlinux.org/">Arch</a>, <a href="https://www.debian.pl/">Debian</a>, <a href="https://forum.fedora.pl/">Fedora</a>, <a href="https://ubuntu.pl/forum/">Mint</a>, <a href="https://forums.opensuse.org/">openSUSE</a>, <a href="https://ubuntu.pl/forum/">Ubuntu</a>. To bardzo dobre miejsca, aby pomóc osobom zaczynającym przygodę z Linuksem i szukających rozwiązania jakiegoś problemu. Jeżeli tylko macie wiedzę, którą możecie się podzielić, to z pewnością znajdziecie tam osoby, którym się ona przyda.</p>



<p>Jeżeli nie macie ochoty zaglądać na fora, to zostają jeszcze media społecznościowe. Co prawda na takim Facebooku czy Twitterze raczej nie będzie okazji do zaangażowania się w taką działalność (no chyba, że są jakieś grupy okołoFOSSowe na fb), ale w fediwersum to dość popularny temat, więc na pewno trafi się okazja polecić jakiś program, podpowiedzieć rozwiązanie problemu, a może nawet zagadać bezpośrednio do osób rozwijających WiOO. Fedi zresztą jest świetne jako sposób do trzymania palca na pulsie świata FOSS, sam śledzę w ten sposób np. dystrybucje Linuksa, klienty Mastodona i innych platform oraz garść innych programów WiOO.</p>



<p>Poza pomaganiem przy rozwiązywaniu problemów, można w takich miejscach zająć się głoszeniem dobrej nowiny o FOSS, czyli tak zwanym <em>advocacy</em>. Można np. pokazywać zalety używania Linuksa zamiast zamkniętych systemów operacyjnych czy polecać ciekawe aplikacje WiOO, na które natrafiliście. Warto to robić nienachalnie i bez pogardy dla innych systemów. Na a.p.c.o.l.n. mieliśmy zasadę, że skoro nie chcemy, żeby ktoś pisał o „Linuchu”, to my nie mówimy o „Winshicie” itd. (obecnie zrobiłbym wyjątek od tej zasady dla „Microslopu”, jego użycie jest jak najbardziej uzasadnione, podobnie jak deadname&#8217;owanie Twittera).</p>



<p>Pamiętajcie przy tym, że odwieczna tradycja flejmów (<em>flame wars</em>) o&nbsp;wyższość jednej dystrybucji nad drugą, jak bardzo rozrywkowa by nie była, raczej nie przysłuży się celowi. Lepiej zamiast tego pokazać np. jak można wykorzystać Linuksa do grania (dzięki Steamowi i&nbsp;Protonowi) czy przedłużenia życia starszego sprzętu, niewspieranego już przez Windows. </p>



<p>Masa aplikacji FOSS jest pisana także na inne systemy, więc można polecać je bez namawiania do przesiadki na Linuksa.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="finanse">Wsparcie finansowe osób tworzących WiOO</h2>



<p>Sporym problemem wśród osób rozwijających WiOO jest zmęczenie, a nawet wypalenie. Więcej o tym możecie przeczytać np. w <a href="https://itsfoss.com/news/open-source-developers-are-exhausted/">artykule w serwisie „It&#8217;s FOSS”</a>, opartym na badaniu Mirandy Heath z The University of Edinburgh, tu pozwolę sobie nawiązać tylko do jednego fragmentu.</p>



<p>Raport zawiera sześć czynników, które powodują stan wypalenia u osób rozwijających FOSS i ich odchodzenie od rozwijanych projektów. W skrócie to stres związany z przytłaczającym obciążeniem, poczuciem odpowiedzialności i potrzebą udowadniania własnej wartości. Osoby utrzymujące popularne oprogramowanie są zasypywane zgłoszeniami, a że często pracują solo, nie są w stanie sobie z tym poradzić. Jednocześnie czują zobowiązanie do dalszej pracy, bo porzucenie projektu byłoby jak zdrada.</p>



<p>Do tego dochodzi często toksyczne zachowanie społeczności: bezrefleksyjne wymaganie nowych funkcjonalności, bez zastanowienia się, czy osoba tworząca projekt ma czas i możliwości na ich realizację oraz bezwzględne krytykowanie wszelkich wpadek, podczas gdy dobra praca jest niedoceniania.</p>



<p>Kolejną kwestią jest fakt, że utrzymywanie istniejącego projektu jest mniej wynagradzające od tworzenia: programowanie nowej aplikacji czy biblioteki jest źródłem frajdy, ale utrzymywanie ich, naprawa błędów, aktualizacja zależności itp. to po prostu uciążliwa, powtarzalna praca.</p>



<p>Ostatnim czynnikiem są kwestie finansowe. Według raportu <strong>60% osób</strong> utrzymujących przy życiu WiOO <strong>nie otrzymuje za to żadnego wynagrodzenia</strong>. Muszą najpierw wykonywać swoją pracę zarobkową, a&nbsp;po niej często odrabiają kolejny etat pracując przy jakimś projekcie FOSS, poświęcając swój czas przeznaczony na życie prywatne, rodzinę i przyjaciół.</p>



<p>Wszyscy lubimy fajne programy WiOO, chcemy by były dobrze zaprojektowane i działające, regularnie aktualizowane i naprawiane. Ale tak przywykliśmy do tego, że są dostępne za darmo, że rzadko myślimy, że ktoś płaci za ich rozwój swoim czasem. Nie jestem w stanie załatwić tym osobom etatów polegających na pracy nad FOSS, dlatego staram się co jakiś czas, w miarę możliwości, wesprzeć jakiś projekt, np. z okazji kolejnego wydania. To samo z osobami lub organizacjami utrzymującymi ważną infrastrukturę np. serwer Matriksa. Moje parę złotych dużo nie zmienia, ale jeżeli takich wpłat zbierze się więcej, mogą naprawdę pomóc. Jeżeli tylko możecie, to gorąco zachęcam, nawet jeżeli będzie to tylko równoważność jednej kawy czy innego napoju.</p>



<p>Jeżeli się na to zdecydujecie, to najlepszym sposobem będzie poszukanie na stronie ulubionego oprogramowania odnośników do serwisów w rodzaju Ko-Fi czy Liberapay, często wykorzystywanych jako metody na przekazywanie finansowego wsparcia. </p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>To koniec drugiej części, trzecia powinna pojawić się wkrótce. Tymczasem zapraszam do rozmowy – jeżeli macie jakieś pytania dotyczące poruszonych zagadnień lub uważacie, że podane przeze mnie informacje wymagają uzupełnienia, a może nawet są błędne, to proszę dajcie znać w komentarzach. Z chęcią poznam wasze zdanie.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horodecki.net/2026/03/15/kolejne-sposoby-na-wejscie-do-spolecznosci-foss/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Zapraszam do społeczności Wolnego i Otwartego Oprogramowania</title>
		<link>https://horodecki.net/2026/03/08/zapraszam-do-spolecznosci-wolnego-i-otwartego-oprogramowania/</link>
					<comments>https://horodecki.net/2026/03/08/zapraszam-do-spolecznosci-wolnego-i-otwartego-oprogramowania/#comments</comments>
		
		<dc:creator><![CDATA[silva rerum]]></dc:creator>
		<pubDate>Sun, 08 Mar 2026 16:50:52 +0000</pubDate>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[Nerdzenie]]></category>
		<category><![CDATA[foss]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[społeczność]]></category>
		<category><![CDATA[WiOO]]></category>
		<category><![CDATA[zgłaszanie błedów]]></category>
		<guid isPermaLink="false">https://horodecki.net/?p=14457</guid>

					<description><![CDATA[Pierwsza część wpisu, w którym zachęcam do dołączenia do społeczności FOSS i pokazuję sposoby, na jakie można to zrobić.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="spis-treści">Spis treści</h2>



<ul class="wp-block-list">
<li><a href="#czym-jest-wioo">Czym jest WiOO?</a></li>



<li><a href="#po-co">Po co?</a></li>



<li><a href="#moje-poczatki">Moje początki</a></li>



<li><a href="#o-wpisie">O wpisie</a></li>



<li><a href="#programowanie">Programowanie</a></li>



<li><a href="#dokumentacja">Dokumentacja</a></li>



<li><a href="#grafika">Grafika</a></li>



<li><a href="#zglaszanie-bledow">Zgłaszanie błędów</a></li>



<li><a href="#pomysly">Pomysły na nowe funkcjonalności</a></li>
</ul>



<h2 class="wp-block-heading" id="czym-jest-wioo">Czym jest WiOO?</h2>



<p>Skrót WiOO oznacza Wolne i Otwarte Oprogramowanie i&nbsp;jest polskim odpowiednikiem angielskiego FOSS (Free and Open-Source Software).</p>



<p>Wolne oprogramowanie to takie, „które może być uruchamiane, kopiowane, rozpowszechniane, analizowane oraz zmieniane i poprawiane przez użytkowników, oraz dające użytkownikom wolność do dzielenia się tym oprogramowaniem bez ograniczeń prawa autorskiego” (za <a href="https://pl.wikipedia.org/wiki/Wolne_oprogramowanie">Wikipedią</a>).</p>



<p>Żeby spełniać warunki do uznania za wolne, oprogramowanie musi zapewniać użytkownikowi cztery wolności:</p>



<ul class="wp-block-list">
<li>Wolność do&nbsp;uruchamiania programu jak chcecie, w&nbsp;dowolnym celu (wolność 0).</li>



<li>Wolność do&nbsp;analizowania, jak działa program i&nbsp;zmieniania go, aby&nbsp;robił co i&nbsp;jak potrzebujecie (wolność 1). Warunkiem koniecznym jest dostęp do&nbsp;kodu źródłowego.</li>



<li>Wolność do&nbsp;rozpowszechniania kopii, byście mogli pomóc innym (wolność 2).</li>



<li>Wolność do&nbsp;udoskonalania programu i&nbsp;publicznego rozpowszechniania własnych ulepszeń, dzięki czemu może z&nbsp;nich skorzystać cała społeczność (wolność 3). Warunkiem koniecznym jest tu dostęp do&nbsp;kodu źródłowego.</li>
</ul>



<p>(Lista pochodzi ze strony <a href="https://www.gnu.org/philosophy/free-sw.pl.html">gnu.org</a>).</p>



<p>Otwarte oprogramowanie to z kolei takie, „w którym kod źródłowy jest wydawany na podstawie licencji, na mocy której właściciel praw autorskich przyznaje użytkownikom prawa do badania, zmiany i rozpowszechniania oprogramowania w ramach licencji wolnego oprogramowania” (cytat z&nbsp;Wikipedii).</p>



<p>Pierwszy termin dotyczy bardziej ideowego podejścia, a drugi bardziej technicznego. Praktycznie każdy program spełniający wymogi bycia wolnym oprogramowaniem będzie też otwarty, ale nie zawsze działa to w drugą stronę. </p>



<p>Przykłady znanego oprogramowania, które jest w ten sposób rozwijane:</p>



<ul class="wp-block-list">
<li>Edytor grafiki <a href="https://gimp.org">Gimp</a>,</li>



<li>Pakiet biurowy <a href="https://www.libreoffice.org/">LibreOffice</a>,</li>



<li>Program do grafiki i animacji 3D <a href="https://www.blender.org/">Blender</a>,</li>



<li>Odtwarzacz wideo <a href="https://www.videolan.org/">VLC</a>,</li>



<li>Edytor plików audio <a href="https://www.audacityteam.org/">Audacity</a>.</li>
</ul>



<p>Przyznaję, że sam używam tych terminów zamiennie, bez przywiązywania uwagi do różnic, lub sięgam po skrót FOSS. W oczach osób z Free Software Foundation i okolic to pewnie myślozbrodnia, ale się tym nie przejmuję.</p>



<p>Niezależnie od terminu, będę w tym wpisie opowiadał o ruchu, czy może raczej środowisku osób wspólnie tworzących oprogramowanie, którego każdy może używać i&nbsp;modyfikować. Głównym celem, który mi przyświeca jest zachęcenie jak największej liczby osób do włączenia się, dlatego spróbuję pokazać, jak można to zrobić, niezależnie od posiadanych umiejętności.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="po-co">Po co?</h2>



<p>Z wielu powodów. Dla kogoś może to być okazja na zyskanie nowych umiejętności i&nbsp;doświadczeń, czy to dla siebie, czy jako czegoś, co można wpisać do CV. Nie chodzi tu tylko o same techniczne umiejętności, jak obsługa repozytorium z oprogramowaniem, ale też np. pracę w zespole.</p>



<p>Dla innych to szansa na poznanie nowych osób, o podobnych zainteresowaniach, zwłaszcza jeżeli trudno im znaleźć kogoś takiego w swoim otoczeniu.</p>



<p>Czasem zaletą może być zwykła chęć tworzenia wspólnego dobra albo satysfakcja którą czujesz, gdy widzisz, że ludzie używają aplikacji, do której powstania się przyczyniasz.</p>



<p>Motywacją może być ochota pokazania, że w zgównowaconym świecie zalewanym AI-slopem przez korporacje Big Tech, nadal jest miejsce na ludzi tworzących razem coś fajnego.</p>



<p>Jeżeli napędza cię coś jeszcze innego, daj znać w komentarzu.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="moje-poczatki">Moje początki</h2>



<p>Sam zostałem fanem tej idei około 25 lat temu, gdy w czasie pierwszych podejść do Linuksa (wtedy był to Slackware albo Red Hat), postanowiłem zainstalować port Quake&#8217;a, o którym przeczytałem w jakimś magazynie (pewnie „Chip Special Linux” lub „Linux+”). Gra była&nbsp;chyba na płycie dołączonej do magazynu, bo nie sądzę, żebym ją ściągał na dial-upie, zamieszczona w postaci kodu źródłowego i żeby pograć, musiałem ją skompilować.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized.jpg" data-lbwps-width="1280" data-lbwps-height="960" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized-500x375.jpg" data-lbwps-exif="&lt;span class=&quot;pswp__caption__exif_camera&quot;&gt;Canon PowerShot A70&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_focal&quot;&gt;5mm&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_fstop&quot;&gt;𝑓/2.8&lt;/span&gt; &lt;span class=&quot;pswp__caption__exif_shutter&quot;&gt;1/60s&lt;/span&gt; "><img loading="lazy" decoding="async" width="500" height="375" src="https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized-500x375.jpg" alt="Biurko stojące w rogu pomalowanego na jasnozielony kolor pokoju, pod skosem z prawej strony. Na biurku stoi duży monitor CRT, srebrno-szara wieża z jedną kolumną stojącą na wieży, po lewej stronie monitora, a drugą po prawej. Pod blatem wysuwana półka z czarną klawiaturą. Pod szufladą po lewej stronie jest półka, na której leży skaner, a pod nim dwie ryzy papieru. Po prawej stronie biurka jest stojak, a na nim spora drukarka. Po lewej regał z magazynami o Linuksie i PHP oraz książki o tej samej tematyce i słownik języka angielskiego. Nad tym wszystkim wisi korkowa tablica z przypiętymi papierami." class="wp-image-13398" srcset="https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized-500x375.jpg 500w, https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized-1024x768.jpg 1024w, https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized-768x576.jpg 768w, https://horodecki.net/wp-content/uploads/2026/02/img_9750.resized.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">To już trochę później niż czas moich linuksowych początków, ale setup podobny.</figcaption></figure>



<p>Zupełnie nie miałem pojęcia, co robię i po prostu przepisywałem polecenia literka po literce (klasyczne <code>./configure</code>, <code>make</code>, <code>make install</code>), ale nie rozumiałem, co się wyświetla w ich wyniku. A że zwracały jakieś błędy, to gra się nie budowała.</p>



<p>W pliku README znalazłem adres e-mail autora i bez większego przekonania, że to coś da, postanowiłem wysłać do niego pytanie. Ku mojemu zdziwieniu nie tylko odpisał, ale i&nbsp;krok po kroku przeprowadził mnie przez cały proces instalowania zależności, kompilacji i&nbsp;instalacji.</p>



<p>Już nie pamiętam, jak się grało w tamten port Quake&#8217;a, ale na zawsze zostało ze mną wrażenie, jakie zrobił na mnie fakt, że komuś nie tylko chciało się stworzyć jakieś oprogramowanie i udostępnić je za darmo, ale też potem całkowitemu newbie z&nbsp;drugiego końca świata cierpliwie wyjaśniać, jak go używać.</p>



<p>Od tamtego momentu chciałem zostać częścią tego świata i myślę, że jakoś mi się to udaje, a tym przydługim tekstem chcę zaprosić was do dołączenia.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="o-wpisie">O wpisie</h2>



<p>Wpis składa się z rozdziałów poświęconych różnym sposobom angażowania się w&nbsp;WiOO. Jeżeli po przeczytaniu tytułu lub kilku pierwszych zdań któregoś z&nbsp;nich dojdziesz do wniosku, że nie ten aspekt cię nie interesuje, zapraszam do przeskoczenia do następnego rozdziału, może w nim uda mi się podsunąć coś, co bardziej ci się spodoba.</p>



<p>Gdy w czasie pisania przekroczyłem granicę 3 tysięcy słów, a końca nie było widać, postanowiłem podzielić wpis na części, żeby łatwiej się go czytało.</p>



<p>Pierwsza z nich zawiera informacje o wejściu w WiOO jako osoba programująca, tworząca dokumentację lub grafikę, zgłaszająca błędy i&nbsp;podsuwająca pomysły na nowe funkcjonalności. Drugą poświęciłem testowaniu aplikacji w czasie ich powstawaniu, pomaganiu innym osobom używającym otwartego oprogramowania oraz wspieraniu osób rozwijających FOSS, a trzecia opowiada o tłumaczeniu aplikacji.</p>



<p>Cytaty, które zobaczycie poniżej dostałem na Fediwersum po zapytaniu o&nbsp;porady dla osób wchodzących w świat FOSS. Bardzo dziękuję i&nbsp;pozdrawiam wszystkie osoby, które odpowiedziały na tamto pytanie.</p>



<p>I jeszcze uwaga techniczna: o ile ogólna tematyka jak najbardziej może dotyczyć różnych systemów operacyjnych, to ze względu na to, że od lat używam wyłącznie Linuksa (w tej chwili <a href="https://get.opensuse.org/tumbleweed/">openSUSE Tumbleweed</a>), konkretne przykłady programów i&nbsp;poleceń będą pochodziły z&nbsp;tego środowiska. Przy budowaniu i instalowaniu pakietów z&nbsp;programami używam <a href="https://flatpak.org/">flatpaka</a>, jako że jest niezależny od dystrybucji i&nbsp;praca z&nbsp;nim wszędzie wygląda tak samo.</p>



<p>Dosyć już tych wstępów, pora na właściwą część tekstu.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="programowanie">Programowanie</h2>



<p>Najłatwiej oczywiście mają osoby potrafiące programować, bo mogą po prostu swoją aplikację udostępnić na którejś z otwartych licencji. Najpopularniejsze z nich to GNU General Public Licence (GPL), MIT oraz BSD. Więcej o nich możecie poczytać np. na stronie <a href="https://opensource.org/licenses">Open Source Initiative</a>. Różnice między nimi w prosty sposób pokazuje strona <a href="https://www.choosingalicense.com/compare">Open Licence Helper</a>, na której znajduje się też wizard, w&nbsp;którym można wyklikać najbardziej pasującą licencję, po odpowiedzeniu na kilka pytań.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-01-31-17-06-48.png" data-lbwps-width="953" data-lbwps-height="749" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-01-31-17-06-48-500x393.png"><img loading="lazy" decoding="async" width="500" height="393" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-01-31-17-06-48-500x393.png" alt="Rekomendacje licencji z serwiou Open Licence Helper. Na podstawie udzielonych przeze mnie odpowiedzi dostałem do wyboru trzy licencje. Najlepiej dopasowaną (66% zgodności) jest licencja GLP-3.0, następna AGPL-30 (63%), a trzecia GPL-2.0 (45%)" class="wp-image-13344" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-01-31-17-06-48-500x393.png 500w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-01-31-17-06-48-768x604.png 768w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-01-31-17-06-48.png 953w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Licencje zaproponowane przez stronę Open Licence Helper.</figcaption></figure>



<p>Jeżeli nie macie pomysłu na własny program lub szukacie czegoś prostszego, niż tworzenie całej aplikacji, to może zainteresować was pisanie poprawek lub dodawanie funkcjonalności do istniejących już aplikacji. Najlepiej w takim przypadku wybrać program, którego używacie <strong>regularnie i dobrze go znacie</strong>. I zacząć od czegoś niewielkiego, a nie porywać się na rzeczy zmieniające pół aplikacji.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Osobom mającym doświadczenie z programowaniem, raczej nie muszę tłumaczyć jak działają serwisy z repozytoriami kodu w rodzaju Codeberga czy GitHuba.</p>



<p>Jeżeli jednak tak nie jest, to warto się zapoznać z tematem, bo znajomość obsługi repozytoriów git jest absolutnie kluczowa i bez niej będzie ci trudno. Nie wyobrażam sobie zabierania się za współpracę w jakimś projekcie bez umiejętności stworzenia forka, pracy na swoim repozytorium, zapisywania zmian w nim i tworzenia pull request, w celu scalenia twojego kodu z oryginalną aplikacją. Sama umiejętność kodowania nie wystarczy, jeżeli nie potrafisz obsłużyć repo.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Niezależnie od tego, czy masz doświadczenie w komercyjnym tworzeniu oprogramowania w zespołach, czy nie, musisz pamiętać o bardzo ważnej rzeczy – osoby tworzące FOSS robią to zazwyczaj w swoim wolnym czasie, godząc to z pracą i&nbsp;życiem osobistym. Jeżeli będziesz natarczywie domagać się natychmiastowej reakcji np. na swoją łatkę, to może się to po prostu skończyć jej odrzuceniem, a może nawet zablokowaniem cię.</p>



<p>To samo dotyczy osób wchodzących w istniejące projekty „z buta”, domagając się np. zmiany konwencji zapisu kodu, filozofii działania programu, korzystania z innej biblioteki albo przepisania na inny język (a widziałem kilka takich zagrywek ze strony fanów Rust), czy po prostu zachowujących się jak buc.</p>



<p>Zanim zabierzesz się za pisanie kodu, sprawdź najpierw, czy w repo aplikacji nie ma informacji dla osób chcących przy niej współpracować, na przykład w pliku CONTRIBUTING.md. Warto też rozejrzeć się za czymś w rodzaju „Code of Conduct”, który często znajduje się w repozytoriach projektów związanych z GNOME. To dokument zawierający standardy i wytyczne dla społeczności, łącznie z przykładami niewłaściwych zachowań, które nie są tolerowane w GNOME.</p>



<p>Szanujmy się wszyscy, bez tego nie ma mowy o owocnej współpracy. W FOSS wchodzi się, by współtworzyć, nie narzucać swoją jedynie słuszną wizję.</p>



<p>Jeszcze jedno: nawet jeżeli zachowamy się odpowiednio, nie ma gwarancji, że osoby zarządzające danym projektem przyjmą nasze zmiany. Przeszkodą może być coś niedużego i zostaniemy poproszeni o jakieś poprawki, a po ich wprowadzeniu łatka zostanie przyjęta. Może się jednak zdarzyć, że nie pasuje do konkretnej wizji projektu, planu jego rozwijania, sposobu działania programu itp.</p>



<p><a href="https://mastodon.com.pl/@grono/115984475096625976">Paweł Gronowski radzi</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Czasem może się zdarzyć, że Twój PR działa, ale nie możemy go przyjąć z&nbsp;różnych względów – np. jest to brzydki hack albo nie pasuje do długoterminowej wizji projektu.<br />Zanim spędzisz czas, pracując nad implementacją bardzo dużej funkcjonalności, warto najpierw przedyskutować czy jest to dobre rozwiązanie i czy zostanie ono przyjęte.</p>
</blockquote>



<p>Jeżeli bardzo będzie zależało wam na konkretnych zmianach, można taki program sforkować, czyli zrobić swoją wersję, bazując kodzie oryginału, a potem regularnie brać zaktualizowany kod macierzystego programu i nakładać łatki dopasowujące go do własnej wizji.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="dokumentacja">Dokumentacja</h2>



<p>Wśród rad dla początkujących, jakie dostałem na fedi od osób już działających w takich projektach powtarzała się jedna, o której sam nie pomyślałem. Poza pisaniem kodu, bardzo ważne jest tworzenie dokumentacji:</p>



<p><a href="https://mastodon.com.pl/@grono/115984475096625976">Paweł Gronowski</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Kontrybucja dokumentacji jest często cenniejsza od kodu, a przede wszystkim łatwiejsza do oceny dla opiekuna niż kodu.</p>
</blockquote>



<p><a href="https://society.oftrolls.com/@hrw/115984166995021099">Marcin Juszkiewicz</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Wybrać coś, czego używają. […] Gdzie wiedzą czego brakuje w dokumentacji i chcą to dodać. Pisanie kodu to nie jest umiejętność, którą trzeba posiadać, by pomóc w&nbsp;projektach FOSS.</p>
</blockquote>



<p><a href="https://mastodon.social/@dopelover/115990086735052092">dopelover</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>No i jest jeszcze kwestia tworzenia, nazwijmy to nieprogramistycznych zasobów, oczywiście zależnych od rodzaju projektu np. szablony dokumentów, dokumentacja dla użytkowników, tutoriale, wiki itp. itd.</p>
</blockquote>



<p>Sam się tym nigdy nie zajmowałem, ale rzeczywiście tworzenie dokumentacji wygląda na całkiem dobry sposób na wejście w jakiś projekt i poznanie sposobu jego działania.</p>



<p>Oczywiście, zanim się za to zabierzecie, warto porozmawiać na ten temat z osobami tworzącymi oprogramowanie i zapoznać się z tym jak wygląda dotychczasowa dokumentacja, żeby zachować spójność.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="grafika">Grafika</h2>



<p>Nie macie ochoty grzebać się w kodzie, ale macie za to artystyczne zacięcie? Świetnie się składa, każda aplikacja potrzebuje ikony, część także ilustracji, a gry całej masy rozmaitej grafiki. </p>



<p>Jeżeli natraficie na nowy projekt, który używa tymczasowej ikony i&nbsp;moglibyście zaproponować coś bardziej dopracowanego – śmiało zgłaszajcie się z propozycją. Może uważacie, że obecną ikonę jakiegoś programu można by poprawić, podnosząc np. jej czytelność? w takim wypadku skontaktujcie się z kimś z osób tworzących aplikację i&nbsp;przedstawcie swoją sugestię.</p>



<p>Warto się przed tym zapoznać z <a href="https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines">wytycznymi dotyczącymi ikon i&nbsp;kolorów aplikacji</a> z&nbsp;serwisu Flathub, który jest najpopularniejszym źródłem oprogramowania w&nbsp;pakietach flatpak. A&nbsp;jeżeli program, który chcecie wspomóc swoją grafiką, jest przeznaczony głównie dla środowiska GNOME, lekturą obowiązkową będzie odpowiednia sekcja <a href="https://developer.gnome.org/hig/guidelines/app-icons.html">GNOME Human Interface Guidelines</a>, która zawiera porady dotyczące rozmiarów, kształtu, wykorzystania perspektywy i szegółowości ikon.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-17-05-41.png" data-lbwps-width="751" data-lbwps-height="510" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-17-05-41-500x340.png"><img loading="lazy" decoding="async" width="500" height="340" src="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-17-05-41-500x340.png" alt="Wycinek ze strony GNOME HIG dotyczący szczegółowości ikon. Tekst mówi o tym, że ikony mają rozmiar 128x128 pikseli, ale najczęściej wyświetlane są pomniejszone do 64x64, a nawet 32x32, dlatego należy unikać zbyt dużej ilości detali, które zginą przy przeskalowaniu do mniejszych rozmiarów. Pod tekstem ikona przedstawiająca biało-fioletowy sejf w tych trzech rozmiarach." class="wp-image-14499" srcset="https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-17-05-41-500x340.png 500w, https://horodecki.net/wp-content/uploads/2026/03/Zrzut-ekranu-z-2026-03-08-17-05-41.png 751w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Fragment wytycznych GNOME HIG dotyczących ikon aplikacji.</figcaption></figure>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="zglaszanie-bledow">Zgłaszanie błędów</h2>



<p>Tak samo, jak oprogramowanie produkowane przez korporacje, tak i aplikacje tworzone przez społeczność WiOO nie są wolne od błędów. Te pierwsze jednak mogą zatrudnić testerów, drugie polegają na zgłoszeniach od użytkowników.</p>



<p>Jeżeli traficie na błąd, zwłaszcza jeżeli to coś dużego, jak np. wywalanie się aplikacji, dobrze zgłosić go osobom tworzącym projekt. Czasem wydaje się, że problem jest tak dokuczliwy, że na pewno ktoś już go zgłosił i nie ma co się tym przejmować. Warto jednak sprawdzić, czy rzeczywiście jest już zgłoszenie, bo być może wszyscy pomyśleli podobnie i nie zgłosił nikt.</p>



<p>Żeby ustalić, jak to zrobić, najprościej zajrzeć do okna informacji o programie, które w&nbsp;aplikacjach dla ekosystemu GNOME jest zazwyczaj ostatnią pozycją w menu głównym. Poza informacją o osobach rozwiajającyn program, powinna tam się znaleźć opcja „Zgłaszanie błędów”, której kliknięcie otworzy w przeglądarce stronę zgłoszeń (<em>issues</em>) w repozytorium projektu, na którymś z serwisów w rodzaju <a href="https://codeberg.org/">Codeberga</a>, <a href="https://github.com/">GitHuba</a> czy <a href="https://gitlab.gnome.org/">Gitlaba</a>.</p>



<p>Niestety, wszystkie z nich wymagają założenia konta przed wysłaniem zgłoszenia, ale warto to zrobić, bo jeżeli się wciągniecie w taką działalność, to przyda się wam niejednokrotnie. Poza raportowaniem konto pozwala też m.in. na otrzymanie informacje o&nbsp;reakcji i ewentualnym rozwiązaniu problemu oraz śledzenie projektów, by np. dowiedzieć się o&nbsp;nowym wydaniu jeszcze zanim paczka z nim pojawi się w&nbsp;repozytorium twojej dystrybucji lub na Flathubie.</p>



<p class="info">Zanim zabierzesz się za raportowanie błędu, sprawdź listę zgłoszeń, czy ktoś już czasem tego nie zrobił. Może nawet jest już pod nim informacja o rozwiązaniu i tym, czy pojawi się ono w nadchodzącym wydaniu.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Samo zgłaszanie jest dość proste i polega na wypełnieniu kilku pól formularza. Sporo projektów ma je dopasowane do własnych potrzeb, tak by raport dawał jak najwięcej pomocnych informacji.</p>



<p>W przypadku androidowego klienta Mastodona o nazwie Pachli wszystko zawarte jest w&nbsp;jednym polu: opis błędu, sposób odtworzenia go, co się powinno dziać zamiast błędu oraz zrzuty lub nagrania demonstrujące wystąpienie błędu i wersja aplikacji, w której występuje.</p>



<p>Z kolei Tuba (też klient fediwersum, tyle że dla Linuksa) ma to rozbite na osobne pola, z&nbsp;dodatkowym miejscem na rodzaj platformy, z&nbsp;której korzystamy z Tubą, system operacyjny i sposób instalacji samego programu.</p>



<p>Ciekawe pole, którego nie widziałem w innych formularzach, ma Tonearm, klient Tidala, którego niedawno <a href="https://horodecki.net/2026/02/16/pow-10-tonearm-nowy-klient-tidala-dla-linuksa/" data-type="post" data-id="13869">polecałem na blogu</a>. Przy zgłaszaniu błędu możemy wybrać, jak duży ma wpływ na używalność programu (<em>Impact on usability</em>).</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-20-14.png" data-lbwps-gid="8" data-lbwps-width="789" data-lbwps-height="691" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-20-14-500x438.png"><img loading="lazy" decoding="async" width="789" height="691" data-id="13348" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-20-14.png" alt="Formularz zgłaszania błędów w programie Pachli. Pole tekstowe jest wypełnione tekstem wyjaśniających, jakie informacje należy podać: Describe the bug, To Reproduce, Expected behavior, Screenshots or video, Links, Versions, Additional context, Affirmation." class="wp-image-13348" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-20-14.png 789w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-20-14-500x438.png 500w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-20-14-768x673.png 768w" sizes="auto, (max-width: 789px) 100vw, 789px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz.png" data-lbwps-gid="8" data-lbwps-width="818" data-lbwps-height="621" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-500x380.png"><img loading="lazy" decoding="async" width="818" height="621" data-id="13350" src="https://horodecki.net/wp-content/uploads/2026/02/obraz.png" alt="Fragment formularza zgłaszania błędów w Tubie. Widoczne elementy to Instance Backend, Operating system, Package, Troubleshooting information." class="wp-image-13350" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz.png 818w, https://horodecki.net/wp-content/uploads/2026/02/obraz-500x380.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-768x583.png 768w" sizes="auto, (max-width: 818px) 100vw, 818px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-1.png" data-lbwps-gid="8" data-lbwps-width="937" data-lbwps-height="357" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-1-500x191.png"><img loading="lazy" decoding="async" width="937" height="357" data-id="13352" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-1.png" alt="Sekcja Impact on usability formularza zgłaszania błędów w Tonearm. Do wyboru opcje Tonearm is unusable, Tonearm is barely usable, Tonearm is mostly usable, Tonearm is useable." class="wp-image-13352" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-1.png 937w, https://horodecki.net/wp-content/uploads/2026/02/obraz-1-500x191.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-1-768x293.png 768w" sizes="auto, (max-width: 937px) 100vw, 937px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Przykłady formularzy zgłaszania błędów w Pachli, Tubie i Tonearm.</figcaption></figure>



<p>Jednym z najważniejszych elementów zgłoszenia są <em>Steps to reproduce</em> czy kroki prowadzące do wystąpienia błędu. Czasem jest to dość oczywiste: „kliknij to, to i&nbsp;gotowe”, ale nie zawsze jest to takie proste i problem wydaje się losowy. Warto jednak się przyjrzeć dokładniej i sprawdzić, czy są jakieś powtarzające się okoliczności, np. Tuba <a href="https://github.com/GeopJr/Tuba/issues/570">wywalała się</a> przy odpowiadaniu na wpis zawierający czyjąś nazwę użytkownika, a&nbsp;Tonearm <a href="https://codeberg.org/dergs/Tonearm/issues/221">pada</a> po otworzeniu elementu z wyników wyszukiwania i późniejszym powrocie do nich.</p>



<p>Przydatne są również <em>troubleshooting information</em>, czyli informacje debuggowania. O ile program je udostępnia, to znajdziecie je w oknie „O programie” i zawierają informacje o&nbsp;środowisku, w jakim działa aplikacja. Wystarczy je skopiować i wkleić w odpowiednie pole formularza zgłaszania błędów.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-28-36.png" data-lbwps-gid="9" data-lbwps-width="380" data-lbwps-height="659" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-28-36-288x500.png"><img loading="lazy" decoding="async" width="380" height="659" data-id="13354" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-28-36.png" alt="Informacje debuggowania emulatora terminala Konsola: 
KGX: 49.2
Adw: 1.8.4
Vte: 0.82.3
  Features: +BIDI +GNUTLS +ICU +SYSTEMD
Gtk: 4.20.3
  Display: GdkWaylandDisplay
  Surface: GdkWaylandToplevel
  Renderer: GskGLRenderer
GLib: 2.86.4
OS: openSUSE Tumbleweed ((null))
  XDG_CURRENT_DESKTOP: GNOME
  XDG_SESSION_DESKTOP: gnome
  XDG_SESSION_TYPE: wayland
  LANG: pl_PL.UTF-8
" class="wp-image-13354" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-28-36.png 380w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-28-36-288x500.png 288w" sizes="auto, (max-width: 380px) 100vw, 380px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-27-10.png" data-lbwps-gid="9" data-lbwps-width="380" data-lbwps-height="607" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-27-10-313x500.png"><img loading="lazy" decoding="async" width="380" height="607" data-id="13355" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-27-10.png" alt="Informacje debuggowania Tubby:
os: GNOME 49 (Flatpak runtime)
prefix: /app
flatpak: true
version: main-a7f47cec (development)
gtk: 4.20.3 (4.20.2)
libadwaita: 1.8.4 (1.8.1)
libsoup: 3.6.5 (3.6.5)
libgtksourceview: 5.18.0 (5.18.0)
libspelling: true
Clapper: 0.8.0 (0.8.0)
GStreamer: GStreamer 1.26.10 (1.6.26.0)
GExiv2: 1500 (0.15.0)" class="wp-image-13355" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-27-10.png 380w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-01-17-27-10-313x500.png 313w" sizes="auto, (max-width: 380px) 100vw, 380px" /></a></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Informacje debugowania w Konsole i Tubie.</figcaption></figure>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>W większości przypadków wypełnienie takiego formularza powinno wystarczyć do udanego zgłoszenia błędu. Czasem jednak może się okazać, że będą potrzebne dodatkowe informacje i osoba tworząca aplikację zapyta np. o to, jakie opcje mamy włączone i poprosi o przetestowanie po ich wyłączeniu. Bywa, że przydają się dodatkowe informacje, które program wyświetla po uruchomieniu w&nbsp;emulatorze terminala, takim jak Konsola albo Terminal GNOME.</p>



<p>W przypadku Tuby zainstalowanej z Flathuba robi się to wpisując polecenie <code>flatpak run dev.geopjr.Tuba</code>.</p>



<p class="info">Ciąg dev.geopjr.Tuba jest identyfikatorem pakietu flatpak, który można znaleźć np. na stronie programu na Flathubie lub wyszukując go w wyniku polecenia <code>flatpak list</code>, które wypisuje wszystkie zainstalowane pakiety (`flatpak list | grep Tuba&#8220; wyświetli wyłącznie linie zawierające słowo Tuba).</p>



<p>Po uruchomieniu programu w ten sposób doprowadzamy do wystąpienia błędu i&nbsp;wysyłamy osobie rozwijającego apkę to, co pojawiło się w terminalu.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-2.png" data-lbwps-width="1107" data-lbwps-height="738" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-2-500x333.png"><img loading="lazy" decoding="async" width="500" height="333" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-2-500x333.png" alt="Okno terminala z dziewięcioma komunikatami Tuby uruchomionej poleceniem flatpak run dev.deopjr.Tuba. Wystąpienia słowa WARNING są żółte, CRITICAL fioletowe a czas komunikatu niebieski." class="wp-image-13379" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-2-500x333.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-2-1024x683.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-2-768x512.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-2.png 1107w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></figure>



<p>Okno emulatora terminala z komunikatami z uruchomionej Tuby.</p>



<p>Bywa, że zwykłe komunikaty z terminala to za mało i przydałoby się uruchomić program w sposób dający więcej informacji, np. tak: <code>G_MESSAGES_DEBUG=Tuba flatpak run dev.geopjr.Tuba</code></p>



<p>Na początek nie ma co się tym przejmować. Jeżeli osoba rozwijająca program poprosi nas o dodatkowe informacje, a my nie będziemy wiedzieli, jak je uzyskać, to wystarczy zapytać. Nie ma w tym żadnego wstydu, każdy ma prawo czegoś nie wiedzieć, a&nbsp;w&nbsp;interesie twórców oprogramowania jest pomoc w dostarczeniu potrzebnych danych.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-3.png" data-lbwps-width="1107" data-lbwps-height="738" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-3-500x333.png"><img loading="lazy" decoding="async" width="500" height="333" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-3-500x333.png" alt="Okno terminala pełne szczegółowych komunikatów, które nie mieszczą się w nim i znikają pod dolną krawędzią. Użyte polecenie to G_MESSAGES_DEBUG=Tuba flatpak run dev.geopjr.Tuba. Rodzaj komunikatu (DEBUG lub INFO) jest kolorowany na zielono, a czas na niebiesko." class="wp-image-13383" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-3-500x333.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-3-1024x683.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-3-768x512.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-3.png 1107w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Ze zmienną <code>G_MESSAGES_DEBUG</code> Tuba zwraca dużo więcej informacji.</figcaption></figure>



<p>Wiem, że to wszystko może wydawać się dużą ilością informacji dla kogoś, kto chce tylko spokojnie używać jakiegoś programu. Ostatecznie jednak zgłaszanie błędów pomaga zarówno osobom tworzącym, jak i używającym programów. I zazwyczaj naprawdę jest proste i rzadko wymaga większego dłubania, o którym (może niepotrzebnie) wspomniałem wyżej.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<h2 class="wp-block-heading" id="pomysly">Pomysły na nowe funkcjonalności</h2>



<p>Raportowanie błędów to nie jedyne, do czego można wykorzystać sekcję „Issues” w&nbsp;repozytoriach programów. Inną możliwością jest zgłaszanie zapotrzebowania na nowe funkcje, czyli <em>feature requests</em>, <strong>po sprawdzeniu, czy już nie zostały zgłoszone</strong>.</p>



<p>Edytor Markdown <a href="https://github.com/sevonj/scratchmark/issues/150">nie ma możliwości ustawienia używanej czcionki</a>? Klient fediwersum nie wspiera <a href="https://github.com/GeopJr/Tuba/issues/386">sprawdzania pisowni przy edycji alt tekstu</a>? Odtwarzacz <a href="https://codeberg.org/dergs/Tonearm/issues/61">nie pokazuje, która piosenka na liście jest aktualnie grana</a>? Nie ma problemu – jeżeli brakująca funkcjonalność ma sens, pasuje do wizji osoby tworzącej program i jest możliwa do zaimplementowania, to jest spora szansa, że się pojawi w którymś z przyszłych wydań.</p>



<p>Pamiętajcie jednak, że nikt nie jest wam winny dodania do swojego programu rzeczy, które potrzebujecie i nie ma co się awanturować, gdy się to nie stanie. Zamiast tego możecie spróbować lepiej uzasadnić swoją propozycję, albo poszukać innego programu, który ma funkcję, której potrzebujecie.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Na tym kończę część pierwszą, druga powinna pojawić się niedługo. Jest już w większości napisana, została mi korekta i dodanie ilustracji.</p>



<p>Jeżeli macie jakieś pytania dotyczące poruszonych zagadnień lub uważacie, że podane przeze mnie informacje wymagają uzupełnienia, a może nawet są błędne, to proszę dajcie znać w komentarzach. Z chęcią poznam wasze zdanie.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horodecki.net/2026/03/08/zapraszam-do-spolecznosci-wolnego-i-otwartego-oprogramowania/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>POW #10 &#8211; Tonearm, nowy klient Tidala dla Linuksa</title>
		<link>https://horodecki.net/2026/02/16/pow-10-tonearm-nowy-klient-tidala-dla-linuksa/</link>
					<comments>https://horodecki.net/2026/02/16/pow-10-tonearm-nowy-klient-tidala-dla-linuksa/#comments</comments>
		
		<dc:creator><![CDATA[silva rerum]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 20:38:07 +0000</pubDate>
				<category><![CDATA[GNOME i GTK]]></category>
		<category><![CDATA[adwaita]]></category>
		<category><![CDATA[Codeberg]]></category>
		<category><![CDATA[flathub]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[muzyka]]></category>
		<category><![CDATA[streamowanie]]></category>
		<category><![CDATA[Tidal]]></category>
		<category><![CDATA[tłumaczenie]]></category>
		<category><![CDATA[Tonearm]]></category>
		<guid isPermaLink="false">https://horodecki.net/?p=13869</guid>

					<description><![CDATA[Dzisiaj polecam wam świetną i dobrze wyglądającą linuksową aplikację do streamowania muzyki.]]></description>
										<content:encoded><![CDATA[
<p>Przeglądanie RSS z nowymi aplikacjami na Flathubie opłaciło się po raz kolejny i odkryłem niezły program na bardzo wczesnym etapie jego rozwoju.</p>



<p>Natrafienie na niego nie mogło przyjść w lepszym momencie, bo High Tide, czyli klient Tidala, którego używałem do tej pory, aktualnie ma problemy i zapętla w kółko jedną piosenkę. Podobno dzieje się tak tylko na PipeWire, u mnie jednak zmiana wyjścia dźwięku w preferencjach nic nie dawała, a nie chciałem grzebać w ustawieniach audio w całym systemie, żeby obejść błąd w jednym programie. Wróciłem więc do używania strony Tidala zapakowanej w przeglądarkę i udającej samodzielną aplikację.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-13.png" data-lbwps-width="1295" data-lbwps-height="831" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-13-500x321.png"><img loading="lazy" decoding="async" width="500" height="321" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-13-500x321.png" alt="Zrzut ekranu zawierający stronę Tidal.com w trakcie odtwarzania mojej playlisty „Albumy 2024 – Top 10”. Tło jest czarne, napisy białe lub jasnoszare." class="wp-image-13885" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-13-500x321.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-13-1024x657.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-13-768x493.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-13.png 1295w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Strona Tidal.com jako aplikacja</figcaption></figure>



<p>Może jest używalna, ale wygląda nieporywająco i słabo pasuje do reszty moich aplikacji.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>I wtedy właśnie znalazłem Tonearm, na samym początku jego drogi, świeżo po pierwszym publicznym wydaniu. </p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19.png" data-lbwps-width="1286" data-lbwps-height="1016" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19-500x395.png"><img loading="lazy" decoding="async" width="500" height="395" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19-500x395.png" alt="Okno przeglądarki z otworzoną stroną aplikacji Tonearm w serwisie Flathub.org. Na górze jest logo Tonearm w postaci gramofonu odtwarzającego czarną płytę, nazwa programu i developerzy (The Dergs and Contributors) oraz przyciska Zainstaluj, a poniżej zrzut ekranu okna aplikacji." class="wp-image-13890" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19-500x395.png 500w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19-1024x809.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19-768x607.png 768w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-19-37-19.png 1286w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Strona Tonearm na flathub.org</figcaption></figure>



<p>Poużywałem go przez chwilę, spodobało mi się i zacząłem wypełniać <em>issue trackera</em> na <a href="https://codeberg.org/dergs/Tonearm">stronie projektu na Codebergu</a> zgłoszeniami błędów i prośbami o nowe funkcjonalności.</p>



<p>Gdy okazało się, że osoby tworzące Tonearm (dwa <a href="https://dergs.dev/">sympatyczne smoki</a> ze Szwajcarii) nie tylko nie zablokowały mnie za ten spam, ale też są otwarte na współpracę i reagują na zgłoszenia, naprawiając i dodając różne rzeczy oraz wyjaśniając, na czym polega problem, postanowiłem się zaangażować bardziej i przygotowałem polskie tłumaczenie, bazując na terminach używanych przez tidal.com.</p>



<p>Tonearm nie miał wtedy jeszcze integracji z żadnymi serwisami ułatwiającymi tworzenie wersji językowych (po mojej sugestii już jest podczepiony do Weblate), więc całość odbywała się przez pracę na forku repozytorium i wysyłaniu pull requestów ze zmianami, co przynajmniej wymusiło na mnie odświeżenie lekko zardzewiałej znajomości obsługi gita.</p>



<p>Dość szybko zostało naprawione kilka najbardziej dokuczliwych błędów: z wyświetlaniem większych kolekcji i dłuższych playlist, czy wywalaniem programu po kilkukrotnym przełączaniu utworów. Smoki pracują naprawdę błyskawicznie, czasem ledwo zdążyłem napisać znajomym nerdom, że znowu coś znalazłem, a już przychodził mejl z info o zamknięciu zgłoszenia.</p>



<p>Najdłużej czekałem na naprawienie błędu powodowanego przez nowsze API Tidala, które dla niektórych albumów zwracało tylko część utworów. Ten wpis miałem prawie gotowy ponad tydzień przed publikacją i odkładałem jego wrzucenie, aż będzie można słuchać całej biblioteki Tidala.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Wystarczy jeden rzut oka na okno Tonearm, żeby było wiadomo, dlaczego program tak bardzo mi się spodobał. GUI wykorzystujące Gtk4 i bibliotekę Adwaita idealnie pasuje do całej reszty mojego gnomowego biurka.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-6.png" data-lbwps-width="1426" data-lbwps-height="911" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-6-500x319.png"><img loading="lazy" decoding="async" width="500" height="319" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-6-500x319.png" alt="Okno Tonearm w trakcie odtwarzania albumu „Za kim idziesz” Hańby i Hioba Dylana. Po lewej panel z odtwarzaczem zawierający dużą okładkę albumu, tytuł, twórców i ikony głośności, dodania do kolekcji, przejścia do albumu, przejścia do twórców, przejścia do radia utworu i udostępniania. Pod ikonami pasek postępu, a pod paskiem ikony sterowania: losowanie, wstecz, pauza, naprzód i zapętlanie. Po prawej lista utworów albumu." class="wp-image-13870" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-6-500x319.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-6-1024x654.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-6-768x491.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-6.png 1426w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Okno Tonearm z jasnym stylem i niebieskim kolorem akcentowym</figcaption></figure>



<p>Oczywiście obsługuje również ciemny styl oraz zmianę koloru akcentu.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-8.png" data-lbwps-width="1426" data-lbwps-height="890" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-8-500x312.png"><img loading="lazy" decoding="async" width="500" height="312" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-8-500x312.png" alt="Okno Tonearm tym razem z ciemnym stylem i źółtymi akcentami na pasku przewijania, zaznaczonej ikonce serca oznaczającej utwór dodany do kolekcji i przyciski odtwarzania i pauzy. Otwarzana jest piosenka „Bailando sola aqui”  z płyty „Vida” Any Tijoux." class="wp-image-13873" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-8-500x312.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-8-1024x639.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-8-768x479.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-8.png 1426w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">i z ciemnym stylem i żółtym akcentem</figcaption></figure>



<p class="info">Te delikatne paski ostrzegawcze na górze okna oznaczają, że używam aplikacji w wersji rozwojowej, a nie ostatecznego wydania, to taki standard wśród aplikacji dla GNOME.</p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Dobry wygląd to nie wszytko i na szczęście się na nim nie kończy. Tonearm obsługuje przeglądanie i odtwarzanie muzyki ze strony głównej Tidala, jego biblioteki i kolekcji użytkownika (śledzonych artystów oraz polubionych płyt i utworów), a także feedu, czyli „treści dla ciebie”, ukrywającego się tu pod ikonką dzwonka.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-12.png" data-lbwps-width="1475" data-lbwps-height="1023" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-12-500x347.png"><img loading="lazy" decoding="async" width="500" height="347" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-12-500x347.png" alt="Znowu Tonearm z ciemnym stylem, tym razem pokazuje zawartość sekcji na stronie głównej Tidala: „Albumy, które Ci się spodobają”, „Twoi zapomniani  ulubieńcy” oraz „Spersonalizowane miksy”. W panelu po lewej odtwarzana jest płyta „The Medieval Drone Society” Laury Cannell." class="wp-image-13882" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-12-500x347.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-12-1024x710.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-12-768x533.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-12.png 1475w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Przeglądanie propozycji Tidala</figcaption></figure>



<p>W przeciwieństwie do High Tide potrafi skorzystać z Tidalowej funkcji autoplay, czyli odtwarzania powiązanych utworów po zakończeniu albumu/playlisty, co dla mnie jest dość istotną opcją, dzięki której często odkrywam nową muzykę.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/obraz-10.png" data-lbwps-width="1426" data-lbwps-height="890" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/obraz-10-500x312.png"><img loading="lazy" decoding="async" width="500" height="312" src="https://horodecki.net/wp-content/uploads/2026/02/obraz-10-500x312.png" alt="Tonearm odtwarzający płytę „#Indawoods” Swada i Niczos zasłonięty mniejszym oknem preferencji z aktywną sekcją Scrobblowanie pokazującą opcje dotyczące połączenia z serwisami ListenBrainz i Last.fm." class="wp-image-13876" srcset="https://horodecki.net/wp-content/uploads/2026/02/obraz-10-500x312.png 500w, https://horodecki.net/wp-content/uploads/2026/02/obraz-10-1024x639.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/obraz-10-768x479.png 768w, https://horodecki.net/wp-content/uploads/2026/02/obraz-10.png 1426w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Ustawienia scrobblowania</figcaption></figure>



<p>Jak widać na zrzucie powyżej, w preferencjach możemy włączyć scrobblowanie do ListenBrainz oraz Last.fm. Dzięki temu mogłem wyłączyć zajmującego się tym do tej pory demona <a href="https://github.com/InputUsername/rescrobbled">rescrobbled</a>. Przy okazji mogę go szczerze polecić, bo pracuje ze wszystkimi odtwarzaczami obsługującymi MPRIS, dzięki czemu można niezależnie od tego, którego programu używa się do słuchania muzyki, czy to streamowanej, czy z lokalnej biblioteki, wszystko automagicznie ląduje na Last.fm.</p>



<p class="info">Scrobblowanie (od nazwy serwisu Audioscrobbler) to wysyłanie danych o słuchanej muzyce do serwisu, który na tej podstawie tworzy statystyki i rekomendacje. Last.fm używam w tym celu już od 2005 roku.</p>



<p>Tonearm pozwala też na wyświetlenie tekstu utworu (o ile jest dostępny) i zarządzaniem kolejką odtwarzania. Obie funkcjonalności są dostępne przez przyciski na spodzie panelu, w którym znajduje się odtwarzacz.</p>



<figure class="wp-block-image aligncenter size-medium"><a href="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56.png" data-lbwps-width="1378" data-lbwps-height="818" data-lbwps-srcsmall="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56-500x297.png"><img loading="lazy" decoding="async" width="500" height="297" src="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56-500x297.png" alt="Tonearm z ciemnym stylem i czerwonymi akcentami odtwarza piosenkę „De Magruga” z albumu „LUX” Rosalii z tekstem utworu widocznym w panelu po lewej stronie." class="wp-image-13901" srcset="https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56-500x297.png 500w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56-1024x608.png 1024w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56-768x456.png 768w, https://horodecki.net/wp-content/uploads/2026/02/Zrzut-ekranu-z-2026-02-16-20-21-56.png 1378w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a><figcaption class="wp-element-caption">Tonearm wyświetla słowa odtwarzanego utworu</figcaption></figure>



<p>Przydatną możliwością jest wybór jakości dźwięku serwowanego z Tidala (do wyboru cztery poziomy) oraz sposobu normalizowania dźwięku utworów, czyli ReplayGain: automatycznie, dla całych albumów (AlbumGain) i pojedynczych piosenek (TrackGain). </p>



<p class="has-text-align-center has-large-font-size" style="font-style:normal;font-weight:300">– <img loading="lazy" decoding="async" width="24" height="14" class="wp-image-7680" style="width: 24px;" src="https://horodecki.net/wp-content/uploads/2024/05/fleuron.svg" alt="Klasyczny ozdobnik w kształcie liścia"/> –</p>



<p>Poza tym wszystkim, co już pojawiło się w Tonearm, poprosiłem również o dodanie powiększania okładek albumów i zmiany layoutu aplikacji, tak by lepiej dopasowywał się do dostępnego miejsca i dzięki temu był przyjaźniejszy dla urządzeń mobilnych. </p>



<p>Z rzeczy zgłoszonych przez innych czekam jeszcze na tworzenie i edycję playlist oraz filtrowanie i sortowanie artystów, albumów i playlist w kolekcji.</p>



<p>Jak widać z powyższej listy zostały rzeczy mniej istotne dla codziennego korzystania z Tidala, dlatego mogę śmiało polecić tę aplikację, mimo że jest naprawdę świeża. </p>



<p>Najnowsze wydanie 1.3.1 możecie znaleźć <a href="https://flathub.org/en/apps/dev.dergs.Tonearm">na Flathubie</a>. Nie zawiera jeszcze obejścia problemu API Tidala z niektórymi utworami, ale pewnie pojawi się ono niedługo. </p>



<p>Jeżeli chcielibyście spróbować wersji rozwojowych, to źródła programu znajdują się <a href="https://codeberg.org/dergs/Tonearm">na Codebergu</a>. Tonearm od niedawna bardzo ładnie buduje się w GNOME Builderze, ale jeśli wolicie uniknąć samodzielnego tworzenia flatpaka, <a href="https://codeberg.org/dergs/Tonearm/actions">na stronie akcji</a> znajdują się testowe pakiety generowane automatycznie po każdej zmianie w głównej gałęzi repozytorium.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://horodecki.net/2026/02/16/pow-10-tonearm-nowy-klient-tidala-dla-linuksa/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
