voidlinux - sfeed_tests - sfeed tests and RSS and Atom files | |
git clone git://git.codemadness.org/sfeed_tests | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
voidlinux (77218B) | |
--- | |
1 <?xml version="1.0" encoding="utf-8"?> | |
2 <feed xmlns="http://www.w3.org/2005/Atom"> | |
3 | |
4 <title>Void news</title> | |
5 <subtitle>Follow Void Linux news</subtitle> | |
6 <link href="https://voidlinux.org/"/> | |
7 <link type="application/atom+xml" rel="self" href="https://voidl… | |
8 <updated>2020-08-27T02:05:45+00:00</updated> | |
9 <author> | |
10 <name>Void Linux Team</name> | |
11 </author> | |
12 <id>https://voidlinux.org/</id> | |
13 | |
14 | |
15 <entry> | |
16 <title>Welcome New Contributors!</title> | |
17 <link href="https://voidlinux.org/news/2020/05/new-contr… | |
18 <id>https://voidlinux.org/news/2020/05/new-contributors<… | |
19 <published>2020-05-01T00:00:00+00:00</published> | |
20 <updated>2020-05-01T00:00:00+00:00</updated> | |
21 <content type="xhtml"> | |
22 <div xmlns="http://www.w3.org/1999/xhtml"> | |
23 <p><p>The Void project is pleased to wel… | |
24 | |
25 <p>Joining us to work on packages is <code class="language-plaintext hig… | |
26 | |
27 <p>Joining us to advance the docs site are <code class="language-plainte… | |
28 | |
29 <p>Interested in seeing your name in a future update here? Read our | |
30 <a href="/contribute/">Contributing Page</a> and join us today!</p> | |
31 </p> | |
32 </div> | |
33 </content> | |
34 </entry> | |
35 | |
36 <entry> | |
37 <title>Some Context for Recent Events</title> | |
38 <link href="https://voidlinux.org/news/2020/04/some-cont… | |
39 <id>https://voidlinux.org/news/2020/04/some-context</id> | |
40 <published>2020-04-24T00:00:00+00:00</published> | |
41 <updated>2020-04-24T00:00:00+00:00</updated> | |
42 <content type="xhtml"> | |
43 <div xmlns="http://www.w3.org/1999/xhtml"> | |
44 <p><h3 id="notice">Notice</h3> | |
45 | |
46 <p>This article is being actively edited and amended for both grammar and | |
47 to answer new questions as they come up.</p> | |
48 | |
49 <ul> | |
50 <li> | |
51 <p>12:05 PST - Feedback from IRC for English, clarification of the | |
52 timeline of xtraeme’s resignation and subsequent ban.</p> | |
53 </li> | |
54 <li> | |
55 <p>12:17 PST - Correct innaccuracies in the musl section. My | |
56 understanding of the bug was incorrect (@the-maldridge).</p> | |
57 </li> | |
58 <li> | |
59 <p>2020-04-27 - Correct xtraeme’s pronouns, spelling/grammar clean… | |
60 </li> | |
61 </ul> | |
62 | |
63 <hr /> | |
64 | |
65 <p>First a disclaimer. This is written from my point of view | |
66 (@the-maldridge), and while it may contain views and opinions of the | |
67 project, you should assume these are my views. This is posted here | |
68 and in the official name-space of Void Linux as questions have asked | |
69 that demand answers. I hope that in this post I can provide some | |
70 answers.</p> | |
71 | |
72 <p>To answer the immediate question of the day, Juan RP (xtraeme) has | |
73 chosen to leave the Void Linux project.</p> | |
74 | |
75 <p>There will be no noticeable disruption to users, and the project will | |
76 continue as before. We appreciate your support of Void and continuing | |
77 to advance the state of the void. To any maintainer or contributor | |
78 that was on the receiving end of one of xtraeme’s recent posts, I | |
79 would like to extend the my apologies for this and those of the | |
80 project. Void is a project we intend all to be involved in, and that | |
81 means treating others with respect.</p> | |
82 | |
83 <p>I’d now like to answer a few questions that came to my mind as this | |
84 situation developed. I’m on the West coast of the US, so I woke up to | |
85 a lot of this already in progress, but I also have a lot more | |
86 historical context than what is easily find-able. Keep in mind that | |
87 out of respect for Juan’s privacy, I am deliberately not revealing | |
88 some information they chose to reveal to project maintainers. They | |
89 may have left a sour taste with me, but they still have a right to | |
90 privacy like anyone else, and if they wish to share details of their | |
91 personal life, that is their decision and theirs alone.</p> | |
92 | |
93 <h2 id="how-will-the-project-survive-without-xtraeme">How will the proje… | |
94 | |
95 <p>Short: Like we have before.</p> | |
96 | |
97 <p>Long: This is not the first time xtraeme has left Void. I wrote about | |
98 this on my personal site back in 2018, and you can read that full | |
99 <a href="https://michaelwashere.net/post/2018-11-28-enobdfl/">article</a… | |
100 there. Running a project like Void means ensuring that there is no | |
101 single point of failure. We have a healthy pool of developers, and | |
102 short of perhaps some folks wanting to take some time off to recover | |
103 from the events of the day, I fully expect the project will continue | |
104 as it has.</p> | |
105 | |
106 <h2 id="the-thread-on-github-mentioned-xtraeme-has-broken-things-in-the-… | |
107 | |
108 <p>Being rolling release and not breaking things involves a lot of | |
109 coordination. Some of this coordination is baked into the software. | |
110 For example, you can’t update your system while large rebuilds are in | |
111 progress because that would install incompatible versions of some | |
112 libraries (we’re working on improving the user experience around this | |
113 though).</p> | |
114 | |
115 <p>Some of the recent changes that come to mind in no particular order:<… | |
116 | |
117 <ul> | |
118 <li> | |
119 <p>Pushing a musl update with no coordination. For context around | |
120 the change, see <a href="http://musl.libc.org/time64.html">this link</a>… | |
121 | |
122 <p>This is something we’re planning a lot of work around because | |
123 updating the C library will involve recompiling almost everything | |
124 on musl against it. Normally there’s ABI compatibility, but for | |
125 reasons far beyond the scope of this article, musl is different. | |
126 There is an ongoing dialog in #musl on freenode with some Alpine | |
127 devs as well trying to determine the best way to do this upgrade.</p> | |
128 | |
129 <p>Updated: The original version referenced 1.2 of musl. This was | |
130 incorrect as the interactions that caused this problem are not | |
131 unique to this version.</p> | |
132 </li> | |
133 <li> | |
134 <p>Pushing a glibc update with no coordination. We saw the trouble | |
135 that befell Arch when they did a glibc update that temporarily | |
136 broke bash. We’d hoped to avoid this same fate, but while | |
137 discussing the change, the package was merged without discussion.</p> | |
138 </li> | |
139 <li> | |
140 <p>General problems related to single points of failure. Though | |
141 this is not an issue now, there was a time where xtraeme was the | |
142 single point of failure. Through their personal inaction we lost | |
143 the voidlinux.eu domain. We had a lot of trouble getting the | |
144 project back into a stable state, but through a significant amount | |
145 of effort, we recovered. Though newer maintainers probably don’t | |
146 notice this, there are a lot of older developers and users who | |
147 remember when xtraeme was all that Void was. The project has | |
148 grown significantly since then, and this is a change I’m not sure | |
149 xtraeme ever fully adjusted to.</p> | |
150 </li> | |
151 </ul> | |
152 | |
153 <h2 id="i-feel-like-youre-not-telling-a-lot-of-stuff-where-can-i-get-tha… | |
154 | |
155 <p>For better or for worse, a lot of discussions happen behind closed | |
156 doors. We don’t feel it is our place as Void Linux to air the dirty | |
157 laundry of maintainers and contributors. What goes on in your | |
158 personal life outside of Void is not our concern, and we have no right | |
159 to tell others your secrets. That being said, all factors are | |
160 considered when evaluating granting or removing a commit bit. Note | |
161 that according to <a href="https://infradocs.voidlinux.org">InfraDocs</a… | |
162 all of the initial discussion of onboarding and offboarding | |
163 maintainers happens on private forums. These discussions are pretty | |
164 mundane, usually along the lines of “have they broken anything?” or | |
165 “wow, this person does a lot of work really fast”. The discussions | |
166 around xtraeme unfortunately have been of the form “their conduct | |
167 towards others really isn’t great, but I’m not comfortable approachi… | |
168 them.”</p> | |
169 | |
170 <h2 id="does-void-profit-from-xtraemes-work">Does Void profit from xtrae… | |
171 | |
172 <p>While Void and its users <em>benefit</em> from the work of all develo… | |
173 including xtraeme, no profit is derived from this work.</p> | |
174 | |
175 <p>Void is an Open Source project, it always has been and will continue | |
176 to be one. You are free to use the code within the confines of the | |
177 license. Since Void is permissively licensed, you are welcome to use | |
178 it commercially as well, though please be a good citizen of the FOSS | |
179 community and upstream your patches when practical.</p> | |
180 | |
181 <p>Should xtraeme wish to change the license of their copy of XBPS, we | |
182 will evaluate the situation.</p> | |
183 | |
184 <p>Void does not accept donations. We appreciate the efforts of those | |
185 that reach out from time to time wishing to support the project | |
186 financially, but our expenses are minimal. If you want to contribute, | |
187 you can help by updating packages, reviewing issues, or generally | |
188 being a part of the community. If an individual maintainer chooses to | |
189 solicit or accept a donation for their work, this is done separately | |
190 from the project. International tax law is a complicated beast, and | |
191 as a project we’re not comfortable accepting donations until we have | |
192 the infrastructure in place to show where the money goes, and provide | |
193 you with appropriate documentation.</p> | |
194 | |
195 <h2 id="did-xtraeme-resign-or-were-they-banned">Did xtraeme resign, or w… | |
196 | |
197 <p>Timing is everything. The ticket which expressed xtraeme’s desire … | |
198 resign was opened first, then over the next hour they lashed out at | |
199 several project members. The resignation was processed per their | |
200 wishes, and per their conduct torwards others, a ban was applied at | |
201 the organization level.</p> | |
202 | |
203 <h2 id="i-want-to-talk-to-someone-about-this">I want to talk to someone … | |
204 | |
205 <p>Sure, we live in interesting times, and talking to others is a great | |
206 way to cope with unexpected change. Feel free to chat on Void’s | |
207 official IRC channel <code class="language-plaintext highlighter-rouge">… | |
208 at <code class="language-plaintext highlighter-rouge">r/voidlinux</code>… | |
209 can find on the website.</p> | |
210 | |
211 <h1 id="what-happens-now">What happens now?</h1> | |
212 | |
213 <p>Remember these are my words (@the-maldridge) not necessarily those of | |
214 the project.</p> | |
215 | |
216 <p>This is a really uncomfortable place to be in. None of us want to | |
217 start a Twitter war, and at the end of the day, Void is about working | |
218 on software we all believe in.</p> | |
219 | |
220 <p>Void will continue. We do appreciate the work that xtraeme did to get | |
221 us here, projects like Void need someone to have an idea and run with | |
222 it, then convince others to join you. xtraeme was that early person | |
223 with an idea, there’s no denying this. It’s sad that this | |
224 collaboration had to end this way. I would be lying if I said this | |
225 was a surprise to me, but I truly did not in my wildest imagination | |
226 expect it to play out like this.</p> | |
227 | |
228 <h3 id="enough-of-politics-diplomacy-and-speaking-as-a-project-what-do-y… | |
229 | |
230 <p>The last 8 months since xtraeme showed up again have been a roller | |
231 coaster. It’s been a stressful time and I’ve come very close to | |
232 leaving the project several times. I’m one of a handful of people who | |
233 directly maintain the day to day infrastructure that builds and serves | |
234 Void, and that made me the receiving end of more than one rant. I’m | |
235 going to take a step back and think about if I want to continue this | |
236 project or work on one of my own more. When I started working on Void | |
237 I was in college and employed by a university that was running Void | |
238 internally (sadly, they no longer do). I had a lot more free time | |
239 then, and Void was a lot less stressful to work on.</p> | |
240 | |
241 <p>xtraeme is a talented C developer; there is no denying this, and I | |
242 respect their work on XBPS. It is certainly not without bugs, but | |
243 no one’s code is. I am personally upset that this is how this had to | |
244 end. I expected at some point xtraeme would part ways with the | |
245 project, as their goals and those of the project have diverged. I am | |
246 upset that they felt the need to take out their frustration on | |
247 contributors and maintainers, and that is why the decision was made to | |
248 ban them from the organization.</p> | |
249 </p> | |
250 </div> | |
251 </content> | |
252 </entry> | |
253 | |
254 <entry> | |
255 <title>OpenSSH 8.2 update requires restart of sshd</titl… | |
256 <link href="https://voidlinux.org/news/2020/02/openssh-8… | |
257 <id>https://voidlinux.org/news/2020/02/openssh-8.2</id> | |
258 <published>2020-02-20T00:00:00+00:00</published> | |
259 <updated>2020-02-20T00:00:00+00:00</updated> | |
260 <content type="xhtml"> | |
261 <div xmlns="http://www.w3.org/1999/xhtml"> | |
262 <p><p>With the OpenSSH update to 8.2 you… | |
263 <code class="language-plaintext highlighter-rouge">sshd</code> service, … | |
264 | |
265 <p>XBPS will print a notice about this when updating OpenSSH, | |
266 but we hope by posting this notice we will reach the | |
267 users who don’t read the output of regular updates | |
268 and avoid or minimize complications due to the update.</p> | |
269 | |
270 <p>We considered restarting sshd automatically on update, | |
271 but the policy of not restarting, enabling or otherwise | |
272 interact with services during updates stands.</p> | |
273 </p> | |
274 </div> | |
275 </content> | |
276 </entry> | |
277 | |
278 <entry> | |
279 <title>News about XBPS</title> | |
280 <link href="https://voidlinux.org/news/2020/01/xbps-news… | |
281 <id>https://voidlinux.org/news/2020/01/xbps-news</id> | |
282 <published>2020-01-30T00:00:00+00:00</published> | |
283 <updated>2020-01-30T00:00:00+00:00</updated> | |
284 <content type="xhtml"> | |
285 <div xmlns="http://www.w3.org/1999/xhtml"> | |
286 <p><p>XBPS 0.58 was just released, with … | |
287 Since the last post was for 0.54, this post includes all changes and som… | |
288 | |
289 <h2 id="highlights">Highlights</h2> | |
290 | |
291 <h3 id="performance-improvements">Performance improvements</h3> | |
292 | |
293 <p>Some users might have noticed that removing the <code class="language… | |
294 The dependency resolution algorithm has been completely rewritten and is… | |
295 | |
296 <p>See the <a href="https://github.com/void-linux/xbps/pull/78">pull req… | |
297 | |
298 <p>The <code class="language-plaintext highlighter-rouge">--fulldeptree<… | |
299 | |
300 <h3 id="ignorepkg-configuration-option"><code class="language-plaintext … | |
301 | |
302 <p>Many users tried to get rid of the default kernel or some other <code… | |
303 For this we’ve added a new configuration keyword: <code class="languag… | |
304 | |
305 <p>With this new keyword you can ignore packages that are pulled in by o… | |
306 | |
307 <p>As example you can add <code class="language-plaintext highlighter-ro… | |
308 | |
309 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
310 # xbps-remove linux-firmware-amd | |
311 </code></pre></div></div> | |
312 | |
313 <p>This works for any package, i.e. being able to remove <code class="la… | |
314 Or removing the <code class="language-plaintext highlighter-rouge">linux… | |
315 | |
316 <h3 id="noextract-configuration-option"><code class="language-plaintext … | |
317 | |
318 <p>Another useful new feature is the new <code class="language-plaintext… | |
319 files that should not be extracted when installing or updating packages.… | |
320 | |
321 <p>This allows as example to skip extracting translations the users are … | |
322 allowing to reduce the installation size.</p> | |
323 | |
324 <p>We plan to make use of it in <code class="language-plaintext highligh… | |
325 | |
326 <h2 id="download-only-flag">Download only flag</h2> | |
327 | |
328 <p>A new flag was added to <a href="https://man.voidlinux.org/xbps-insta… | |
329 download packages and its dependencies without installing them.</p> | |
330 | |
331 <h2 id="changelog">Changelog</h2> | |
332 | |
333 <h3 id="xbps-058-2020-01-30">xbps-0.58 (2020-01-30):</h3> | |
334 | |
335 <ul> | |
336 <li> | |
337 <p>libfetch: fix <a href="https://www.freebsd.org/security/advisorie… | |
338 </li> | |
339 <li> | |
340 <p><a href="https://man.voidlinux.org/xbps-query.1">xbps-query(1)</a… | |
341 of orphans, needing multiple iterations to collect | |
342 all of them in a single transaction. <a href="https://github.com/xtraeme… | |
343 </li> | |
344 <li> | |
345 <p><a href="https://man.voidlinux.org/xbps-checkvers.1">xbps-checkve… | |
346 To list removed templates in srcpkgs. <a href="https://github.com/Chocim… | |
347 </li> | |
348 <li> | |
349 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
350 This now can be used to download all required | |
351 binary packages of the target pkg without the need | |
352 to have write permission to the <code class="language-plaintext highligh… | |
353 | |
354 <div class="language-plaintext highlighter-rouge"><div class="highli… | |
355 </code></pre></div> </div> | |
356 | |
357 <p>NOTE: <code class="language-plaintext highlighter-rouge">-c, --ca… | |
358 pathname, otherwise it will treat it as relative to | |
359 rootdir. <a href="https://github.com/xtraeme">[xtraeme]</a></p> | |
360 </li> | |
361 <li> | |
362 <p><a href="https://man.voidlinux.org/xbps-fetch.1">xbps-fetch(1)</a… | |
363 downloaded files. <a href="https://github.com/Duncaen">[duncaen]</a></p> | |
364 </li> | |
365 <li> | |
366 <p>configure: re-add <code class="language-plaintext highlighter-rou… | |
367 by default. <a href="https://github.com/xtraeme">[xtraeme]</a></p> | |
368 </li> | |
369 <li> | |
370 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
371 while updating xbps. <a href="https://github.com/xtraeme">[xtraeme]</a><… | |
372 </li> | |
373 <li> | |
374 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
375 If set, enables reproducible mode in pkgdb. <a href="https://github.com/… | |
376 </li> | |
377 <li> | |
378 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
379 the transaction are on hold. [Mohamad Barbar]</p> | |
380 </li> | |
381 <li> | |
382 <p><a href="https://man.voidlinux.org/xbps-rindex.1">xbps-rindex(1)<… | |
383 Contained wrong info and did not provide enough value | |
384 to be useful; another step towards reproducibility. | |
385 <a href="https://github.com/xtraeme">[xtraeme]</a></p> | |
386 </li> | |
387 <li> | |
388 <p><a href="https://man.voidlinux.org/xbps-create.1">xbps-create(1)<… | |
389 </li> | |
390 <li> | |
391 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
392 any install/update transaction. If there’s a new update | |
393 for the <code class="language-plaintext highlighter-rouge">xbps</code> p… | |
394 declared as a single transaction, i.e:</p> | |
395 | |
396 <div class="language-plaintext highlighter-rouge"><div class="highli… | |
397 </code></pre></div> </div> | |
398 | |
399 <p>Otherwise it will return <code class="language-plaintext highligh… | |
400 error code to diagnose what failed. <a href="https://github.com/xtraeme"… | |
401 </li> | |
402 <li> | |
403 <p><a href="https://man.voidlinux.org/xbps.d.5">xbps.d(5)</a>: new �… | |
404 to skip extracting files matching a pattern. <a href="https://github.com… | |
405 </li> | |
406 <li> | |
407 <p><a href="https://man.voidlinux.org/xbps.d.5">xbps.d(5)</a>: autod… | |
408 at compile-time on linux systems. <a href="https://github.com/xtraeme">[… | |
409 </li> | |
410 <li> | |
411 <p>configure: added <code class="language-plaintext highlighter-roug… | |
412 by default. <a href="https://github.com/xtraeme">[xtraeme]</a></p> | |
413 </li> | |
414 <li> | |
415 <p>Multiple bugs with packages on hold were fixed. <a href="https://… | |
416 </li> | |
417 <li> | |
418 <p><a href="https://man.voidlinux.org/xbps-uchroot.1">xbps-uchroot(1… | |
419 options argument. <a href="https://github.com/sgn">[Doan Tran Cong Danh]… | |
420 </li> | |
421 <li> | |
422 <p><a href="https://man.voidlinux.org/xbps-alternatives.1">xbps-alte… | |
423 </li> | |
424 </ul> | |
425 | |
426 <p>17 new test cases were added in this release, 6 people | |
427 were involved: Juan RP, Piotr Wójcik, Duncan Overbruck, | |
428 Doan Tran Cong Danh, Mohamad Barbar, q66.</p> | |
429 | |
430 <h3 id="xbps-0571-2019-10-27">xbps-0.57.1 (2019-10-27):</h3> | |
431 | |
432 <ul> | |
433 <li> | |
434 <p>Multiple changes and improvements to the transaction | |
435 fetch code. <a href="https://github.com/Duncaen">[duncaen]</a></p> | |
436 </li> | |
437 <li> | |
438 <p>Verify revision in <code class="language-plaintext highlighter-ro… | |
439 to handle properly package names that use <code class="language-plaintex… | |
440 <a href="https://github.com/Chocimier">[Chocimier]</a></p> | |
441 </li> | |
442 <li> | |
443 <p><a href="https://man.voidlinux.org/xbps-checkvers.1">xbps-checkve… | |
444 <a href="https://github.com/xtraeme">[xtraeme]</a></p> | |
445 </li> | |
446 <li> | |
447 <p><a href="https://man.voidlinux.org/xbps-alternatives.1">xbps-alte… | |
448 symlink before removing it. <a href="https://github.com/xtraeme">[xtraem… | |
449 </li> | |
450 <li> | |
451 <p>Try to find a usable shell instead of using <code class="language… | |
452 when executing package scripts. <a href="https://github.com/Gottox">[Got… | |
453 </li> | |
454 <li> | |
455 <p><a href="https://man.voidlinux.org/xbps-rindex.1">xbps-rindex(1)<… | |
456 archives. <a href="https://github.com/Chocimier">[Chocimier]</a></p> | |
457 </li> | |
458 <li> | |
459 <p><a href="https://man.voidlinux.org/xbps-create.1">xbps-create(1)<… | |
460 <a href="https://github.com/Chocimier">[Chocimier]</a></p> | |
461 </li> | |
462 </ul> | |
463 | |
464 <h3 id="xbps-057-2019-08-06">xbps-0.57 (2019-08-06):</h3> | |
465 | |
466 <ul> | |
467 <li> | |
468 <p>xbps now builds with tcc and pcc. <a href="https://github.com/xtr… | |
469 </li> | |
470 <li> | |
471 <p>xbps now uses the transactional file checks for package removals, | |
472 this fixes issues where xbps removes wrong files, if a package | |
473 replaces another packages with the same files. <a href="https://github.c… | |
474 </li> | |
475 <li> | |
476 <p><a href="https://man.voidlinux.org/xbps-remove.1">xbps-remove(1)<… | |
477 This restores the behaviour of xbps prior to 0.54. <a href="https://gith… | |
478 </li> | |
479 <li> | |
480 <p><a href="https://man.voidlinux.org/xbps-remove.1">xbps-remove(1)<… | |
481 all orphaned packages. <a href="https://github.com/Duncaen">[duncaen]</a… | |
482 </li> | |
483 <li> | |
484 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
485 up to date return EEXIST. <a href="https://github.com/jnbr">[jnbr]</a></… | |
486 </li> | |
487 <li> | |
488 <p><a href="https://man.voidlinux.org/xbps-query.1">xbps-query(1)</a… | |
489 to not list the package itself. <a href="https://github.com/Duncaen">[du… | |
490 </li> | |
491 <li> | |
492 <p>Updated zsh completions. <a href="https://github.com/leah2">[leah… | |
493 </li> | |
494 </ul> | |
495 | |
496 <h3 id="xbps-056-2019-06-24">xbps-0.56 (2019-06-24):</h3> | |
497 | |
498 <ul> | |
499 <li> | |
500 <p>Fixed <code class="language-plaintext highlighter-rouge">xbps_tra… | |
501 ENXIO because the transaction dictionary wasn’t | |
502 initialized before first use. Regression from 0.54. <a href="https://git… | |
503 </li> | |
504 <li> | |
505 <p>Fixed unlocking the pkgdb via <code class="language-plaintext hig… | |
506 </li> | |
507 <li> | |
508 <p>Fixed flushing pkgdb to storage and re-reading it unnecessarily, | |
509 this affected <a href="https://man.voidlinux.org/xbps-alternatives.1">xb… | |
510 <a href="https://man.voidlinux.org/xbps-pkgdb.1">xbps-pkgdb(1)</a> and | |
511 <a href="https://man.voidlinux.org/xbps-reconfigure.1">xbps-reconfigure(… | |
512 <a href="https://github.com/xtraeme">[xtraeme]</a></p> | |
513 </li> | |
514 <li> | |
515 <p>xbps now allows to remove an installed package that was | |
516 added to the ignored packages list with <code class="language-plaintext … | |
517 <a href="https://man.voidlinux.org/xbps.d.5">xbps.d(5)</a>. <a href="htt… | |
518 </li> | |
519 <li> | |
520 <p>Fixed an issue with multi threaded for each loops | |
521 processing the first slicecount*maxthreads entries twice. <a href="https… | |
522 </li> | |
523 <li> | |
524 <p>Fixed an issue with happy eyeballs, where when a socket | |
525 fails within the connection delay it aborts with the error | |
526 instead of continuing with the next address. <a href="https://github.com… | |
527 </li> | |
528 </ul> | |
529 | |
530 <h3 id="xbps-055-2019-06-21">xbps-0.55 (2019-06-21):</h3> | |
531 | |
532 <ul> | |
533 <li> | |
534 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
535 downloading packages to the cache without attempting to | |
536 install them. <a href="https://github.com/Vaelatern">[Vaelatern]</a></p> | |
537 </li> | |
538 <li> | |
539 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
540 the transaction even if file conflicts were detected. <a href="https://g… | |
541 </li> | |
542 <li> | |
543 <p><a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1… | |
544 or up-to-date if updating, not <code class="language-plaintext highlight… | |
545 returned if there are file conflicts in transaction. <a href="https://gi… | |
546 </li> | |
547 <li> | |
548 <p><a href="https://man.voidlinux.org/xbps-checkvers.1">xbps-checkve… | |
549 </li> | |
550 <li> | |
551 <p>Fixed a build failure on ppc64. <a href="https://github.com/q66">… | |
552 </li> | |
553 <li> | |
554 <p>Fixed a build failure on x86. <a href="https://github.com/Duncaen… | |
555 </li> | |
556 <li> | |
557 <p>Fixed cross compilation with <code class="language-plaintext high… | |
558 </li> | |
559 </ul> | |
560 </p> | |
561 </div> | |
562 </content> | |
563 </entry> | |
564 | |
565 <entry> | |
566 <title>New images and new verification keys</title> | |
567 <link href="https://voidlinux.org/news/2020/01/new-image… | |
568 <id>https://voidlinux.org/news/2020/01/new-images</id> | |
569 <published>2020-01-19T00:00:00+00:00</published> | |
570 <updated>2020-01-19T00:00:00+00:00</updated> | |
571 <content type="xhtml"> | |
572 <div xmlns="http://www.w3.org/1999/xhtml"> | |
573 <p><p>We’re pleased to announce that t… | |
574 promoted to current and is now generally available.</p> | |
575 | |
576 <p>A change that comes along with these new images is the adoption of | |
577 <code class="language-plaintext highlighter-rouge">signify(1)</code> to … | |
578 complexity involved, the relative difficulty in verifying the | |
579 resulting signature, and the questionable state of PGP key | |
580 distribution right now.</p> | |
581 | |
582 <p>The downloads page has been updated with instructions for how you can | |
583 validate new images, and we hope you’ll find this process easier and | |
584 faster than in previous releases.</p> | |
585 </p> | |
586 </div> | |
587 </content> | |
588 </entry> | |
589 | |
590 <entry> | |
591 <title>xbps bug results in missing /bin/sh</title> | |
592 <link href="https://voidlinux.org/news/2019/08/xbps-bug-… | |
593 <id>https://voidlinux.org/news/2019/08/xbps-bug-results-… | |
594 <published>2019-08-13T00:00:00+00:00</published> | |
595 <updated>2019-08-13T00:00:00+00:00</updated> | |
596 <content type="xhtml"> | |
597 <div xmlns="http://www.w3.org/1999/xhtml"> | |
598 <p><p>Due to a bug in xbps there was an … | |
599 | |
600 <p>The bug was fixed quickly, but there’s a 2h window where an update … | |
601 | |
602 <p>If you’re affected by this issue you may experience error messages … | |
603 | |
604 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
605 </code></pre></div></div> | |
606 | |
607 <p>These are the steps to recover your system:</p> | |
608 | |
609 <h4 id="case-1-system-is-still-running-and-you-have-a-working-shell-open… | |
610 | |
611 <p>Run the following command as root:</p> | |
612 | |
613 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
614 </code></pre></div></div> | |
615 | |
616 <p>Afterwards your system should update xbps and recreate <code class="l… | |
617 | |
618 <h4 id="case-2-system-has-rebooted-or-no-shell-is-opened-anymore">Case 2… | |
619 | |
620 <p>Restart your system</p> | |
621 | |
622 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
623 GNU GRUB version 2.02 | |
624 | |
625 ┌──────────────────────�… | |
626 │*Void GNU/Linux … | |
627 │ Advanced options for Void GNU/Linux … | |
628 │ … | |
629 │ … | |
630 │ … | |
631 │ … | |
632 │ … | |
633 │ … | |
634 │ … | |
635 │ … | |
636 │ … | |
637 │ … | |
638 │ … | |
639 └──────────────────────�… | |
640 | |
641 Use the ↑ and ↓ keys to select which entry is highlighted. | |
642 Press enter to boot the selected OS, `e' to edit the commands | |
643 before booting or `c' for a command-line. | |
644 | |
645 | |
646 </code></pre></div></div> | |
647 <p>Once grub comes up, select the kernel you want to boot and press <cod… | |
648 | |
649 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
650 GNU GRUB version 2.02 | |
651 | |
652 ┌──────────────────────�… | |
653 │ search --no-floppy --fs-uuid --set=root --hint-bios=hd0,m… | |
654 │hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 XXXXXXXX-XXXX-XX… | |
655 │XXXXXXXXXXXX … | |
656 │ else … | |
657 │ search --no-floppy --fs-uuid --set=root XXXXXXXX-XXXX-XXX… | |
658 │XXXXXXXXXXX … | |
659 │ fi … | |
660 │ echo 'Loading Linux 4.19.15_1 ...' … | |
661 │ linux /boot/vmlinuz-4.19.15_1 ro loglevel=4 slub_de… | |
662 │ge_poison=1 rd.break … | |
663 │ echo 'Loading initial ramdisk ...' … | |
664 │ initrd /boot/initramfs-4.19.15_1.img … | |
665 │ … | |
666 └──────────────────────�… | |
667 | |
668 Minimum Emacs-like screen editing is supported. TAB lists | |
669 completions. Press Ctrl-x or F10 to boot, Ctrl-c or F2 for | |
670 a command-line or ESC to discard edits and return to the GRUB men… | |
671 | |
672 | |
673 </code></pre></div></div> | |
674 <p>find the line that starts with <code class="language-plaintext highli… | |
675 Make sure it is seperated with a space from the rest of the line</p> | |
676 | |
677 <p>Afterwards Press <code class="language-plaintext highlighter-rouge">C… | |
678 | |
679 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
680 | |
681 dracut:/# | |
682 </code></pre></div></div> | |
683 <p>Once you’ve got a shell execute the following commands:</p> | |
684 | |
685 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
686 dracut:/# chroot /sysroot xbps-alternatives -s bash | |
687 dracut:/# exit | |
688 </code></pre></div></div> | |
689 | |
690 <p>Afterwards the system should work as expected.</p> | |
691 | |
692 <p>Please use <code class="language-plaintext highlighter-rouge">xbps-in… | |
693 | |
694 <h3 id="if-it-doesnt-help">If it doesn’t help</h3> | |
695 | |
696 <p>Join over on #voidlinux in freenode or <a href="https://www.reddit.co… | |
697 </p> | |
698 </div> | |
699 </content> | |
700 </entry> | |
701 | |
702 <entry> | |
703 <title>XBPS 0.54 Released</title> | |
704 <link href="https://voidlinux.org/news/2019/06/xbps-0.54… | |
705 <id>https://voidlinux.org/news/2019/06/xbps-0.54</id> | |
706 <published>2019-06-20T00:00:00+00:00</published> | |
707 <updated>2019-06-20T00:00:00+00:00</updated> | |
708 <content type="xhtml"> | |
709 <div xmlns="http://www.w3.org/1999/xhtml"> | |
710 <p><p>XBPS 0.54 is released. This relea… | |
711 plethora of bug fixes. Some notable fixes include:</p> | |
712 | |
713 <ul> | |
714 <li>Improved conflict checking</li> | |
715 <li>Additional compression formats including zstd</li> | |
716 <li>Fixes to the alternatives system</li> | |
717 <li>New binaries replacing portions of xbps-uhelper</li> | |
718 <li>Over 30 new test cases</li> | |
719 </ul> | |
720 | |
721 <p>New binaries have also been uploaded to the static/ directories of all | |
722 mirrors.</p> | |
723 | |
724 <p>As always you can read the complete changelog on GitHub and file | |
725 issues at | |
726 <a href="https://github.com/void-linux/xbps/issues">https://github.com/v… | |
727 </p> | |
728 </div> | |
729 </content> | |
730 </entry> | |
731 | |
732 <entry> | |
733 <title>New Homepage</title> | |
734 <link href="https://voidlinux.org/news/2019/04/homepage-… | |
735 <id>https://voidlinux.org/news/2019/04/homepage-redesign… | |
736 <published>2019-04-01T00:00:00+00:00</published> | |
737 <updated>2019-04-01T00:00:00+00:00</updated> | |
738 <content type="xhtml"> | |
739 <div xmlns="http://www.w3.org/1999/xhtml"> | |
740 <p><p>After years of development and bet… | |
741 pleased to announce the new homepage design. No animals were harmed duri… | |
742 development.</p> | |
743 | |
744 <p><a href="/assets/screenshots/void-1st-april-2019.png"><img src="/asse… | |
745 </p> | |
746 </div> | |
747 </content> | |
748 </entry> | |
749 | |
750 <entry> | |
751 <title>VoidLinux.eu Is Not Ours</title> | |
752 <link href="https://voidlinux.org/news/2019/02/voidlinux… | |
753 <id>https://voidlinux.org/news/2019/02/voidlinux-eu-gone… | |
754 <published>2019-02-12T00:00:00+00:00</published> | |
755 <updated>2019-02-12T00:00:00+00:00</updated> | |
756 <content type="xhtml"> | |
757 <div xmlns="http://www.w3.org/1999/xhtml"> | |
758 <p><p>We would like to warn people of a … | |
759 Linux control. <code class="language-plaintext highlighter-rouge">voidli… | |
760 purchased by an unknown 3rd party before Void Linux could regain ownersh… | |
761 this time, please assume that anything involving <code class="language-p… | |
762 to Void Linux, and should be considered potentially malicious. Of course… | |
763 the person who owns the domain now would like to transfer it to our cont… | |
764 we’d be grateful, and will update voidlinux.org to indicate if this ha… | |
765 | |
766 <p>Our official domain is VoidLinux.org.</p> | |
767 </p> | |
768 </div> | |
769 </content> | |
770 </entry> | |
771 | |
772 <entry> | |
773 <title>Cross compilation support for gobject typelibs</t… | |
774 <link href="https://voidlinux.org/news/2019/02/cross-gob… | |
775 <id>https://voidlinux.org/news/2019/02/cross-gobject</id> | |
776 <published>2019-02-03T00:00:00+00:00</published> | |
777 <updated>2019-02-03T00:00:00+00:00</updated> | |
778 <content type="xhtml"> | |
779 <div xmlns="http://www.w3.org/1999/xhtml"> | |
780 <p><p>Thanks to the work of <a href="htt… | |
781 announce cross compiling support for gobject-introspection and packages … | |
782 depend on this tool. This is a big step forward to support more packages | |
783 through cross compiling and stay future proof for glib development.</p> | |
784 | |
785 <p>maxice8 put together a comprehensive <a href="https://maxice8.github.… | |
786 work</a>. This article will be | |
787 higher level overview of our work in this field.</p> | |
788 | |
789 <h3 id="what-are-gobject-and-typelibs">What are gobject and typelibs?</h… | |
790 | |
791 <p>gobject is an abstract description of types defined in glib. Glib is … | |
792 wide range of application and libraries, most notably <a href="https://g… | |
793 Glib itself is written in C but it’s possible to provide dynamic langu… | |
794 bindings to other languages such as <a href="https://python.org">python<… | |
795 | |
796 <p>This mechanism is not builtin into glib, but instead is provided by t… | |
797 gobject-introspection tool. This tool scans both the source and the bina… | |
798 of a library and creates a metadata file that is used to provide type in… | |
799 for other language bindings. For a deeper dive into gobject-introspectio… | |
800 consider the <a href="https://gi.readthedocs.io/en/latest/">docs at read… | |
801 | |
802 <h3 id="the-problem">The problem</h3> | |
803 | |
804 <p>When it comes to Void, we have high demands on portability of applica… | |
805 armv6l, armv7l and aarch64 platforms a completely and exclusively cross | |
806 compiled, meaning they are built on an x86_64 host. This leads to an | |
807 interesting problem with gobject-introspection which by design needs to … | |
808 the same platform as the produced binaries are targeted.</p> | |
809 | |
810 <p>Unfortunately, as already stated this has been a design decision of t… | |
811 software and we can’t do anything to change this constraint itself.</p> | |
812 | |
813 <p>Furthermore, during the last few years the Gnome community drifted to… | |
814 extensively using gobject-introspection in their products. This led to t… | |
815 breakage of more and more applications in the gnome-ecosystem.</p> | |
816 | |
817 <h3 id="the-solution">The solution</h3> | |
818 | |
819 <p>During the last few months we considered different solutions to this … | |
820 This first proposal to not support gir through cross compilation and onl… | |
821 it through native build became more and more unsatisfying as the number … | |
822 packages using this mechanism increased over time.</p> | |
823 | |
824 <p>The second approach which was the followup to the one described above… | |
825 add native builders to the system and build those packages on those nati… | |
826 builders. The issue was here that this would require a lot of infrastruc… | |
827 work and added a lot of complexity.</p> | |
828 | |
829 <p>The third solution and the one we chose was to use the userspace emul… | |
830 features of <a href="http://qemu.org">Qemu</a> to emulate the target sys… | |
831 those calls that needed to be on the target platform. The <a href="https… | |
832 project</a> is already using this approach to cross | |
833 compile Gnome Applications to other platform. We reused many of their to… | |
834 for void-packages. Nontheless, we hit many porting issues - our tooling … | |
835 on musl, too - , new bugs were triggered in void-packages - see for exam… | |
836 <a href="https://maxice8.github.io/1-void-cpython3-cross-pt1/">these</a> | |
837 <a href="https://maxice8.github.io/2-void-cpython3-cross-pt2/">two</a> p… | |
838 blog, and many other small issues needed to be resolved.</p> | |
839 | |
840 <p>Basic support for cross compilation has already landed in void-packag… | |
841 musl port is not yet finished, but we expect it to work soon(tm).</p> | |
842 | |
843 <p>maxice8 also prepared a blog post about his porting work on | |
844 <a href="https://maxice8.github.io/9-libgusb-meson-gir-cross/">libgusb</… | |
845 </p> | |
846 </div> | |
847 </content> | |
848 </entry> | |
849 | |
850 <entry> | |
851 <title>The Life of a Pull Request & Where Commit Bit… | |
852 <link href="https://voidlinux.org/news/2019/02/commit-bi… | |
853 <id>https://voidlinux.org/news/2019/02/commit-bits</id> | |
854 <published>2019-02-03T00:00:00+00:00</published> | |
855 <updated>2019-02-03T00:00:00+00:00</updated> | |
856 <content type="xhtml"> | |
857 <div xmlns="http://www.w3.org/1999/xhtml"> | |
858 <p><p>Sometimes people will join into <c… | |
859 taking so long to get merged. This is an interesting question, and it | |
860 boils down into a few parts. In this article we’ll take a look at the | |
861 life of a pull request and how it gets from idea to package.</p> | |
862 | |
863 <p>For any package to exist, someone first has to want it. This want is | |
864 often expressed as someone in IRC saying “I want to use Void, but I | |
865 need package <code class="language-plaintext highlighter-rouge">foo</cod… | |
866 package and maintain <code class="language-plaintext highlighter-rouge">… | |
867 issue filled to the void-packages repository on GitHub, and sometimes | |
868 it manifests as a “blind” PR showing up for a new package. This last | |
869 one is what we’ll follow as it’s where things get interesting.</p> | |
870 | |
871 <h2 id="a-call-to-action">A Call to Action</h2> | |
872 | |
873 <p>When a PR is created, this triggers GitHub to notify people according | |
874 to its settings. For some members of the project this will trigger an | |
875 email, for some people this will trigger other automation via API, and | |
876 up until very recently, the <code class="language-plaintext highlighter-… | |
877 (this last one is gone as GitHub has removed this functionality with | |
878 no clear replacement path).</p> | |
879 | |
880 <p>This notification will hopefully grab the eye of at least one | |
881 reviewer, who will then open the link to view the PR on GitHub, or | |
882 will otherwise begin reviewing by their preferred means. Many of our | |
883 reviewers prefer to pull the PR locally and view it in their editor of | |
884 choice, or build it locally on more powerful boxes than Travis CI | |
885 provides.</p> | |
886 | |
887 <h2 id="changes-requested">Changes Requested</h2> | |
888 | |
889 <p>This is usually the slow part of getting something accepted to | |
890 void-packages. This is the part that involves going back and forth on | |
891 what changes need to be made or what improvements are requested and | |
892 often involves discussion of potential changes to package policy.</p> | |
893 | |
894 <p>For folks in IRC this often will be a rapid fire exchange of comments | |
895 in channel or query, and often ends with something like this:</p> | |
896 | |
897 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
898 15:31 <maldridge> bobertlo: ping me when you're ready for review+m… | |
899 </code></pre></div></div> | |
900 | |
901 <p>At this point the ball is back in the author’s court, and the | |
902 committer is waiting for changes to be made. At this point it’s also | |
903 considered that a committer is tenuously “assigned” to a PR.</p> | |
904 | |
905 <p>In a good flow, the next thing that happens is another message from | |
906 the author:</p> | |
907 | |
908 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
909 </code></pre></div></div> | |
910 | |
911 <h2 id="the-reviewer-follows-up">The Reviewer Follows Up</h2> | |
912 | |
913 <p>When a reviewer is “assigned” to the PR, it doesn’t really mean… | |
914 they own it, but there is some expectation that they will follow the | |
915 work through to merge unless they explicitly state otherwise. | |
916 Sometimes this looks like a comment on a PR, and other times it looks | |
917 like a poke in IRC to see if the author is still working on the | |
918 changes.</p> | |
919 | |
920 <p>At the end of this phase, the reviewer will either approve or dismiss | |
921 the PR. Usually dismissing a PR is only done if the package is | |
922 completely unworkable and the author and reviewer have come to an | |
923 agreement that it won’t be accepted for some concrete reason, but | |
924 other reasons exist.</p> | |
925 | |
926 <h2 id="merged">Merged</h2> | |
927 | |
928 <p>When a package is accepted the reviewer will merge it, and then our | |
929 automated build infrastructure will kick into action. A webhook from | |
930 GitHub will signal to our infrastructure that a new change is to be | |
931 built, and the systems will pull down the changes via git. After it | |
932 has been ascertained what needs to be rebuilt, the change is | |
933 dispatched to our builders to begin compiling the new or updated | |
934 package.</p> | |
935 | |
936 <p>After compilation, the built package is copied back to the build | |
937 master and is signed, then indexed into the repository for interested | |
938 users to download. Past this point is a complicated web of rsync that | |
939 is beyond the scope of this article.</p> | |
940 | |
941 <h1 id="why-does-it-take-so-long">Why does it take so long?</h1> | |
942 | |
943 <p>First of all, it doesn’t. When you compare Void’s process to oth… | |
944 distributions, the process of getting a package included can be as | |
945 short as an hour from initial request to installable globally.</p> | |
946 | |
947 <p>The slightly longer answer is that there are bottlenecks. One of the | |
948 easiest to understand is that there are only so many servers we can | |
949 build on, and the time it takes to compile packages (especially large | |
950 ones) has to be taken into account.</p> | |
951 | |
952 <p>The single largest bottleneck though is reviewer loading. In the | |
953 process that’s described above, reviewers are loosely connected to | |
954 PRs, and follow them through. While our reviewers are very fast in | |
955 many cases, they are still human and can only hold so many things at | |
956 once.</p> | |
957 | |
958 <p>So if the reviewers are the bottleneck, the question logically | |
959 follows: where do reviewers come from and how do they get their | |
960 special powers?</p> | |
961 | |
962 <h2 id="special-powers">Special Powers</h2> | |
963 | |
964 <p>Within the Void vernacular, people who can merge changes are referred | |
965 to generally as people with a commit bit. For those who are curious, | |
966 this term comes from privileged users on a BSD system often having a | |
967 “wheel bit”. At the time of this writing, there are 13 people with a | |
968 commit bit. These people can merge to almost any repository in the | |
969 organization, but there are a few exceptions. Having a commit bit can | |
970 also come with other powers, like the ability to op up in IRC, but | |
971 such additional powers are not automatic, and are beyond the scope of | |
972 this article.</p> | |
973 | |
974 <p>So how does one get these special powers?</p> | |
975 | |
976 <p>The astute Void follower may already know this answer, as has been | |
977 documented for some time now on | |
978 <a href="https://infradocs.voidlinux.org">InfraDocs</a>.</p> | |
979 | |
980 <p>The full documentation can be found in the <a href="https://infradocs… | |
981 documentation</a>. | |
982 But to save the effort of going to that page, we’ll briefly recap it | |
983 here.</p> | |
984 | |
985 <p>First a person has to be noticed within the project as a good fit for | |
986 having the ability to merge changes on their own. Usually this means | |
987 that they’ve been an active contributor continuously for some time and | |
988 have a history of submitting high quality work.</p> | |
989 | |
990 <p>After an existing committer thinks they’ve found a good candidate, | |
991 they’ll propose the membership change to the project owners in | |
992 private. This allows the project owners time to discuss the proposal | |
993 with the proposer and exchange information without needing to talk | |
994 publicly. Sometimes there are circumstances that a proposer might not | |
995 be aware of that may affect if they wish to continue suggesting | |
996 someone, and this initial conversation gives a time to discuss that.</p> | |
997 | |
998 <p>After this discussion has happened a final decision is made to either | |
999 accept or reject the proposal. In the event it has been accepted, the | |
1000 candidate is informed and has the final choice to accept.</p> | |
1001 | |
1002 <h2 id="ive-got-a-bit-now-what">I’ve Got a Bit, Now What?</h2> | |
1003 | |
1004 <p>Just getting the powers though isn’t enough. People who hold a comm… | |
1005 bit have to justify that they have them. This means means either | |
1006 reviewing changes, commenting on PRs, or otherwise advancing the state | |
1007 of the Void. In the past when people have left the project either by | |
1008 explicitly stating they’ve left, or by just not being a part of it for | |
1009 a while, we revoke powers. This helps us keep Void reasonably secure | |
1010 by knowing exactly who all has the ability to push changes to our | |
1011 repositories.</p> | |
1012 | |
1013 <p>Of course if any of these people were to come back, they’d be welco… | |
1014 to once again demonstrate their skill and again earn the special | |
1015 powers as they did before. Just having had the power at one point is | |
1016 not sufficient cause to be handed it again.</p> | |
1017 | |
1018 <hr /> | |
1019 | |
1020 <p>In summary the life of a PR is part of a much larger process of | |
1021 getting and maintaining a pool of contributors and qualified | |
1022 reviewers. This process is quite involved, and this post only just | |
1023 scratches the surface. Interested persons are always encouraged to | |
1024 reach out to us in <code class="language-plaintext highlighter-rouge">#v… | |
1025 can always be contacted in <code class="language-plaintext highlighter-r… | |
1026 </p> | |
1027 </div> | |
1028 </content> | |
1029 </entry> | |
1030 | |
1031 <entry> | |
1032 <title>The curious case of Python and global variables</… | |
1033 <link href="https://voidlinux.org/news/2019/01/python3-d… | |
1034 <id>https://voidlinux.org/news/2019/01/python3-debugging… | |
1035 <published>2019-01-31T00:00:00+00:00</published> | |
1036 <updated>2019-01-31T00:00:00+00:00</updated> | |
1037 <content type="xhtml"> | |
1038 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1039 <p><p>Void isn’t all smooth sailing. … | |
1040 difficult to troubleshoot ways. This was recently the case when one | |
1041 of our maintainers noticed that certain Python packages weren’t | |
1042 behaving as expected. If you’re curious about how this kind of | |
1043 troubleshooting happens, [maxice8]’s blog post is highly recommended | |
1044 as its a good intro into what its like to troubleshoot things from the | |
1045 perspective of a Void maintainer.</p> | |
1046 | |
1047 <p>Read the troubleshooting process <a href="https://maxice8.github.io/1… | |
1048 </p> | |
1049 </div> | |
1050 </content> | |
1051 </entry> | |
1052 | |
1053 <entry> | |
1054 <title>dhcpcd>=7.1.0 update may require manual interv… | |
1055 <link href="https://voidlinux.org/news/2019/01/dhcpcd-7.… | |
1056 <id>https://voidlinux.org/news/2019/01/dhcpcd-7.1.0</id> | |
1057 <published>2019-01-23T00:00:00+00:00</published> | |
1058 <updated>2019-01-23T00:00:00+00:00</updated> | |
1059 <content type="xhtml"> | |
1060 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1061 <p><p>Starting with 7.1.0, the <a href="… | |
1062 Instead of the hook, upstream suggests to build <a href="https://man.voi… | |
1063 <code class="language-plaintext highlighter-rouge">CONFIG_MATCH_IFACE</c… | |
1064 | |
1065 <p>Users of the <code class="language-plaintext highlighter-rouge">10-wp… | |
1066 that their wireless connection keeps working.</p> | |
1067 | |
1068 <p>The following actions are required when <a href="https://man.voidlinu… | |
1069 | |
1070 <ol> | |
1071 <li>Make sure <a href="https://man.voidlinux.org/wpa_supplicant.8">wpa… | |
1072 <li><a href="https://docs.voidlinux.org/config/services/index.html">En… | |
1073 </ol> | |
1074 | |
1075 <hr /> | |
1076 | |
1077 <p>Other users should be on the lookout as -M is now used to match all i… | |
1078 the <code class="language-plaintext highlighter-rouge">CONF_FILE</code> … | |
1079 </p> | |
1080 </div> | |
1081 </content> | |
1082 </entry> | |
1083 | |
1084 <entry> | |
1085 <title>The Advent of Void: Day 24: 'Twas the Night Befor… | |
1086 <link href="https://voidlinux.org/news/2018/12/02-advent… | |
1087 <id>https://voidlinux.org/news/2018/12/02-advent-closing… | |
1088 <published>2018-12-24T00:00:00+00:00</published> | |
1089 <updated>2018-12-24T00:00:00+00:00</updated> | |
1090 <content type="xhtml"> | |
1091 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1092 <p><p>‘Twas the Night Before Christmas… | |
1093 | |
1094 <p>When all through the cluster, not a build was running, not even a | |
1095 revbump. The packages were all signed by the server with care, in | |
1096 hopes that an upgrade soon would be there.</p> | |
1097 | |
1098 <p>The maintainers were nestled all snug at their desks, while visions of | |
1099 waterfalls danced in their heads; and Gottox in his home and I in | |
1100 mine, had just settled our brains for a long winter break; when out on | |
1101 the frontends there arose such a clatter, I sprang to my terminal to | |
1102 see what was the matter.</p> | |
1103 | |
1104 <p>Away to my console I flew like a flash, called for my tmux and threw | |
1105 open the logstash. The status page on my screen lent a luster of | |
1106 midday to errors below, when what to my wondering eyes should appear, | |
1107 but a stuck qt5 build and 8 staged SONAMEs.</p> | |
1108 | |
1109 <p>With a large webengine so slow and so massive, I knew in an instant it | |
1110 must be chromium. More rapid than runit my commands to the system: | |
1111 “Now Ansible! now Grafana! now buildbot and xbulk! On rindex! on | |
1112 snooze! on, ext4 and repo-cleaner! To the top of the graph to the top | |
1113 of the stack now build, build away, build away all!</p> | |
1114 | |
1115 <p>As disk platters that before the online scrub fly, when they meet with | |
1116 an obstacle always retry, so up to the servers the tasks they all | |
1117 flew, with their mirror of toys and BDFL, too.</p> | |
1118 | |
1119 <p>And then in a twinkling, I saw in reply the server starting and | |
1120 launching of each single build. As I drew in my buffers, and was | |
1121 closing up shop, down the pipe the json came with a stop. It was | |
1122 padded with null bytes from its start to its end, and its braces were | |
1123 all tarnished with codepages and parity bits; a slice of package it | |
1124 contained in its body, and it looked like a startup just opening its | |
1125 reply. The descriptors how they twinkled, the keys how merry!</p> | |
1126 | |
1127 <p>A close of a brace and a retcode of 0 soon gave me to know I had | |
1128 nothing to dread. Buildbot said not a word but went straight to its | |
1129 work, and filled the mirrors with packages. Waiting for but a moment | |
1130 before confirming my intent, the BuildBot went on its way; indexes | |
1131 sprang to their clients, and to the fleet I did signal and away they | |
1132 all built like the sight seldom seen. But before I <code class="languag… | |
1133 to all users:</p> | |
1134 | |
1135 <p>Happy Christmas to all, and to all a Good Night!</p> | |
1136 | |
1137 <p>–maldridge</p> | |
1138 | |
1139 <hr /> | |
1140 | |
1141 <p>We hope you’ve enjoyed the Advent of Void. This is a fun project t… | |
1142 we’ve done now for two years to try and shed some light on lesser | |
1143 known packages. We’ve got a few honorable mentions that may make | |
1144 their way to the feed over the next few days, but this post concludes | |
1145 the series. Void is a volunteer effort that we enjoy sharing with | |
1146 you, and hopefully you’ve learned some neat new tips and tricks these | |
1147 last 24 days. Our volunteers don’t just make packages and manage | |
1148 infrastructure, we also write fun posts like these (though I recognize | |
1149 I’m a quite poor poet). If you want to become involved and help us | |
1150 keep Void going, join us in #xbps on freenode, but maybe wait until | |
1151 after the holidays to do so.</p> | |
1152 | |
1153 <p>Enjoy the winter season and the updates that just keep rolling!</p> | |
1154 </p> | |
1155 </div> | |
1156 </content> | |
1157 </entry> | |
1158 | |
1159 <entry> | |
1160 <title>The Advent of Void: Day 24: gromit-mpx</title> | |
1161 <link href="https://voidlinux.org/news/2018/12/01-advent… | |
1162 <id>https://voidlinux.org/news/2018/12/01-advent-gromit-… | |
1163 <published>2018-12-24T00:00:00+00:00</published> | |
1164 <updated>2018-12-24T00:00:00+00:00</updated> | |
1165 <content type="xhtml"> | |
1166 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1167 <p><p>Have you ever wanted to doodle on … | |
1168 or an arrow, or something to help point out something about a screenshot… | |
1169 maybe during a presentation, on the fly, suddenly you want to point out | |
1170 a particular thing… wouldn’t it be nice to have a tool to help?</p> | |
1171 | |
1172 <p>Turns out, there is one, a very simple tool to do this. I use it every | |
1173 month.</p> | |
1174 | |
1175 <p>Gromit-mpx is simple. <code class="language-plaintext highlighter-rou… | |
1176 clear everything you drew, and <code class="language-plaintext highlight… | |
1177 leave everything on the screen). Just make sure <code class="language-pl… | |
1178 background, and you are set for all your drawing and annotating needs. E… | |
1179 people like me, who just run <code class="language-plaintext highlighter… | |
1180 my screen quickly.</p> | |
1181 | |
1182 <p><img src="https://i.imgur.com/Hw1dn0o.png" alt="ascii-table.com scree… | |
1183 | |
1184 <p>But with just a few lines, I can clarify what I meant to share. I won… | |
1185 winning any art awards, but it works.</p> | |
1186 | |
1187 <p><img src="https://i.imgur.com/65MDkPI.png" alt="ascii-table.com annot… | |
1188 including most of the binary for those values" /></p> | |
1189 | |
1190 <p>Do note that the annotations stick around, even after you scroll the … | |
1191 switch to a different screen entirely.</p> | |
1192 | |
1193 <p><img src="https://i.imgur.com/RrGutNX.png" alt="example of a void lin… | |
1194 | |
1195 <p>So keep <code class="language-plaintext highlighter-rouge">gromit-mpx… | |
1196 | |
1197 <p>For more information, there is always the | |
1198 <a href="https://man.voidlinux.org/1/gromit-mpx">gromit-mpx(1) manpage</… | |
1199 </p> | |
1200 </div> | |
1201 </content> | |
1202 </entry> | |
1203 | |
1204 <entry> | |
1205 <title>Void Linux at 35c3</title> | |
1206 <link href="https://voidlinux.org/news/2018/12/00-35c3.h… | |
1207 <id>https://voidlinux.org/news/2018/12/00-35c3</id> | |
1208 <published>2018-12-24T00:00:00+00:00</published> | |
1209 <updated>2018-12-24T00:00:00+00:00</updated> | |
1210 <content type="xhtml"> | |
1211 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1212 <p><p><img src="/assets/img/35c3-void.pn… | |
1213 | |
1214 <p>2018 has been an intense year for Void. There were many ups and downs. | |
1215 To wrap up the year we’re meeting at the <a href="https://events.ccc.d… | |
1216 | |
1217 <p>To meet other Voiders and chat about related and unrelated topics the… | |
1218 the | |
1219 <a href="https://signup.c3assemblies.de/assembly/cf15ba5d-5bb1-473d-827c… | |
1220 | |
1221 <p>Also, on day 1 (2018-12-27) 19:00, <a href="https://twitter.com/Gotto… | |
1222 annual talk about <a href="https://pretalx.35c3oio.freifunk.space/35c3oi… | |
1223 Void</strong></a>.</p> | |
1224 | |
1225 <p>After the talk, around 20:00, Void is inviting you to a <strong>Void … | |
1226 meet at the Open Infrastructure Orbit in front of the lecture area, find… | |
1227 nearest bar, grab a Beer or a Tschunk, and get into interesting conversa… | |
1228 | |
1229 <p>I’m looking forward to a great event with an awesome community!</p> | |
1230 | |
1231 <p>–Gottox & the Void Linux Team</p> | |
1232 </p> | |
1233 </div> | |
1234 </content> | |
1235 </entry> | |
1236 | |
1237 <entry> | |
1238 <title>The Advent of Void: Day 23: extrace</title> | |
1239 <link href="https://voidlinux.org/news/2018/12/advent-ex… | |
1240 <id>https://voidlinux.org/news/2018/12/advent-extrace</i… | |
1241 <published>2018-12-23T00:00:00+00:00</published> | |
1242 <updated>2018-12-23T00:00:00+00:00</updated> | |
1243 <content type="xhtml"> | |
1244 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1245 <p><p>Today’s tool is <a href="https:/… | |
1246 By default <code class="language-plaintext highlighter-rouge">extrace(1)… | |
1247 The output is a tree like structure including the process id, the comman… | |
1248 | |
1249 <p>The following example is the truncated <code class="language-plaintex… | |
1250 | |
1251 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1252 911 man dhcpcd | |
1253 912 less -T /tmp/man.XXXXH357hT /tmp/man.XXXXEOs5Na | |
1254 930 doas dhcpcd -k | |
1255 930 dhcpcd -k | |
1256 932 /bin/sh /usr/libexec/dhcpcd-run-hooks | |
1257 933 rm -f /run/dhcpcd/resolv.conf/br0.ra | |
1258 936 sed -n 's/^domain //p' br0.dhcp | |
1259 938 sed -n 's/^search //p' br0.dhcp | |
1260 941 sed -n 's/^nameserver //p' br0.dhcp | |
1261 943 cat /etc/resolv.conf.head | |
1262 944 cmp -s /etc/resolv.conf /run/dhcpcd/resolv.conf.br0.ra | |
1263 945 cat /run/dhcpcd/resolv.conf.br0.ra | |
1264 946 rm -f /run/dhcpcd/resolv.conf.br0.ra | |
1265 947 chmod 644 /etc/resolv.conf | |
1266 948 rm -f /run/dhcpcd/resolv.conf.br0.ra | |
1267 950 sed '/^# Generated by dhcpcd/,/^# End of dhcpcd/d' /etc/ntpd… | |
1268 951 cmp -s /etc/ntpd.conf /run/dhcpcd/ntp.conf.br0.ra | |
1269 952 rm -f /run/dhcpcd/ntp.conf.br0.ra | |
1270 ... | |
1271 </code></pre></div></div> | |
1272 | |
1273 <p>Here is another example where we trace the executions by make into a … | |
1274 | |
1275 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1276 cc -Wall -Wno-switch -Wextra -g -O2 -fstack-protector-strong -D_FORTIFY_… | |
1277 cc msed.o blaze822.o mymemmem.o mytimegm.o seq.o slurp.o -lrt -o msed | |
1278 mblaze$ cat make.extrace | |
1279 1992+ make | |
1280 1993+ uname | |
1281 1993- uname exited status=0 time=0.000s | |
1282 1994+ cc -Wall -Wno-switch -Wextra -g -O2 -fstack-protector-strong '-D… | |
1283 1995+ /usr/lib/gcc/x86_64-unknown-linux-gnu/8.2.0/cc1 -quiet -D '_FO… | |
1284 1995- /usr/lib/gcc/x86_64-unknown-lin exited status=0 time=0.212s | |
1285 1996+ as --64 -o msed.o /tmp/ccDnNZ91.s | |
1286 1996- as exited status=0 time=0.019s | |
1287 1994- cc exited status=0 time=0.234s | |
1288 1997+ cc msed.o blaze822.o mymemmem.o mytimegm.o seq.o slurp.o -lrt -o… | |
1289 1998+ /usr/lib/gcc/x86_64-unknown-linux-gnu/8.2.0/collect2 [...] | |
1290 1999- /usr/bin/ld exited status=0 time=0.027s | |
1291 1998- /usr/lib/gcc/x86_64-unknown-lin exited status=0 time=0.029s | |
1292 1997- cc exited status=0 time=0.031s | |
1293 2000+ /bin/sh -c 'test -n "$SOURCE_DATE_EPOCH" || BUILDDATE=$(date '\'… | |
1294 2001+ date '+ (%Y-%m-%d)' | |
1295 2001- date exited status=0 time=0.000s | |
1296 2004+ sed 's/^v//' | |
1297 2005+ git describe --always --dirty | |
1298 2005- git exited status=0 time=0.008s | |
1299 2004- sed exited status=0 time=0.009s | |
1300 2000- /bin/sh exited status=0 time=0.012s | |
1301 2006+ chmod +x museragent | |
1302 2006- chmod exited status=0 time=0.001s | |
1303 1992- make exited status=0 time=0.286s | |
1304 </code></pre></div></div> | |
1305 </p> | |
1306 </div> | |
1307 </content> | |
1308 </entry> | |
1309 | |
1310 <entry> | |
1311 <title>The Advent of Void: Day 22: autossh</title> | |
1312 <link href="https://voidlinux.org/news/2018/12/advent-au… | |
1313 <id>https://voidlinux.org/news/2018/12/advent-autossh</i… | |
1314 <published>2018-12-22T00:00:00+00:00</published> | |
1315 <updated>2018-12-22T00:00:00+00:00</updated> | |
1316 <content type="xhtml"> | |
1317 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1318 <p><p>SSH. The very use of the acronym s… | |
1319 needs to be plugged in.” It can be used to confirm your computers are … | |
1320 to transfer files (two ways!), as a SOCKS proxy (didn’t know this? Go … | |
1321 man page, option <code class="language-plaintext highlighter-rouge">-D</… | |
1322 | |
1323 <p>Poor man’s VPN?</p> | |
1324 | |
1325 <p>Well, I have a computer that lives behind a firewall. I can’t adjus… | |
1326 firewall. But I want to use that computer. Legally, mark you, I have per… | |
1327 from the network owners, it’s just not practical to adjust the firewal… | |
1328 | |
1329 <p>What to do?</p> | |
1330 | |
1331 <p>Well, set up an ssh tunnel of course! In this case, <code class="lang… | |
1332 computer, and the other hostname is a place I can access more readily th… | |
1333 <code class="language-plaintext highlighter-rouge">localhost</code>.</p> | |
1334 | |
1335 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1336 </code></pre></div></div> | |
1337 | |
1338 <p>But problems. My local network isn’t the best, and sometimes when t… | |
1339 power outage my computer comes up first. I could just create a runit ser… | |
1340 to make sure the ssh connection is running…. and I did, for a while, b… | |
1341 when it failed it failed very badly. Finally, I settled on <code class=… | |
1342 does <code class="language-plaintext highlighter-rouge">autossh</code> d… | |
1343 about how it does this, how many times it tries, how long it waits betwe… | |
1344 tries, what the backoffs are, everything like that. So, I combined the b… | |
1345 of both worlds: autossh (which should never crash) wrapped in a user ser… | |
1346 with runit (which should always remember to start autossh)</p> | |
1347 | |
1348 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1349 [ -r ./conf ] && . ./conf | |
1350 : ${portA:=2222} | |
1351 : ${targetHost:=localhost} | |
1352 exec autossh -M 0 -NR ${portA}:localhost:22 $targetHost | |
1353 </code></pre></div></div> | |
1354 | |
1355 <p>And my problem is (mostly) solved! So, in summary: SSH is an amazing … | |
1356 <code class="language-plaintext highlighter-rouge">autossh</code> helps … | |
1357 | |
1358 <p>One point about configuration, from the manpage:</p> | |
1359 | |
1360 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1361 environment variables to control features. ssh seems to be still | |
1362 collecting letters for options, and this seems the easiest way to avoid | |
1363 collisions. | |
1364 </code></pre></div></div> | |
1365 | |
1366 <p>and there are 13 environment variables right now, so plenty you can c… | |
1367 configure.</p> | |
1368 | |
1369 <p>For more information, examples, and to see the list of relevant envir… | |
1370 variables, please read the | |
1371 <a href="https://man.voidlinux.org/1/autossh">autossh(1) manpage</a>.</p> | |
1372 </p> | |
1373 </div> | |
1374 </content> | |
1375 </entry> | |
1376 | |
1377 <entry> | |
1378 <title>The Advent of Void: Day 21: fex</title> | |
1379 <link href="https://voidlinux.org/news/2018/12/advent-fe… | |
1380 <id>https://voidlinux.org/news/2018/12/advent-fex</id> | |
1381 <published>2018-12-21T00:00:00+00:00</published> | |
1382 <updated>2018-12-21T00:00:00+00:00</updated> | |
1383 <content type="xhtml"> | |
1384 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1385 <p><p><a href="https://www.semicomplete.… | |
1386 powerful field extraction tool for working with text.</p> | |
1387 | |
1388 <p>If you spend enough time in a shell fiddling with code or data, you | |
1389 inevitably want to pull fields out of some text you have. For example, | |
1390 say you want the hex sha256sum of a file, minus the name:</p> | |
1391 | |
1392 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1393 a0cd7db7343bed89416660b4f92c43fe7b556439daa2e26e9844ce82491191c6 launch… | |
1394 </code></pre></div></div> | |
1395 | |
1396 <p>You could write this output to a file and remove the filename from it | |
1397 with a text editor, or use cut or awk. However, fex can save you a bit | |
1398 of time by extracting the first field containing the checksum for you:</… | |
1399 | |
1400 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1401 a0cd7db7343bed89416660b4f92c43fe7b556439daa2e26e9844ce82491191c6 | |
1402 </code></pre></div></div> | |
1403 | |
1404 <p>Or, say you want a list of all home directories from passwd. To do th… | |
1405 we ask fex to split by colon and select the sixth field:</p> | |
1406 | |
1407 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1408 /root | |
1409 /dev/null | |
1410 /var/lib/colord | |
1411 /var/empty | |
1412 ... | |
1413 </code></pre></div></div> | |
1414 | |
1415 <p>Or maybe we want <code class="language-plaintext highlighter-rouge">g… | |
1416 | |
1417 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1418 0:root | |
1419 99:nobody | |
1420 999:colord | |
1421 22:dbus | |
1422 ... | |
1423 </code></pre></div></div> | |
1424 | |
1425 <p>Here we can see that fex will keep the separator we split by, letting… | |
1426 reduce the data to only what we want while maintaining its format. And, | |
1427 it allows us to rearrange fields using <code class="language-plaintext h… | |
1428 | |
1429 <p>You can alse use fex to pluck fields by narrowing the selection with | |
1430 different split characters. So let’s say we want to get an idea of what | |
1431 the most common pairs of ‘subject: verb’ are in commit messages for | |
1432 <a href="https://github.com/void-linux/void-packages">void-packages</a> … | |
1433 see which packages receive the most updates.</p> | |
1434 | |
1435 <p>To do this, we’ll use git to search for commit message subjects with | |
1436 a colon and pipe that to fex. Using fex, we’ll write our first selector | |
1437 (<code class="language-plaintext highlighter-rouge">:1</code>) to take t… | |
1438 selector (<code class="language-plaintext highlighter-rouge">:2 1</code>… | |
1439 spaces, and select the first word from that. With this, we get a list of | |
1440 subjects and verbs we can sort and count:</p> | |
1441 | |
1442 <div class="language-plaintext highlighter-rouge"><div class="highlight"… | |
1443 328 youtube-dl update | |
1444 206 xbps-git bump | |
1445 160 git update | |
1446 151 Adapta update | |
1447 149 ImageMagick update | |
1448 143 exiftool update | |
1449 142 firefox update | |
1450 136 kernel update | |
1451 133 rpi-kernel update | |
1452 129 python-setuptools update | |
1453 </code></pre></div></div> | |
1454 | |
1455 <p>From that, we can see that updates make up all but one of the top ten | |
1456 pairs, with xbps-git bumps being the second in line after youtube-dl | |
1457 updates. This only covers basic use of fex, too – you can also select | |
1458 field ranges, fields matching a regular expression, and combine all of | |
1459 these.</p> | |
1460 | |
1461 <p>There are lots of ways to use fex in day to day data munging, | |
1462 programming, and writing your own tools. For many field extraction | |
1463 tasks, fex allows you to easily get the data you want without writing | |
1464 small awk programs or messing with cut. Plus, it’s just fun to use.</p> | |
1465 | |
1466 <p>For more information and examples, please read the <a href="https://m… | |
1467 manpage</a>.</p> | |
1468 </p> | |
1469 </div> | |
1470 </content> | |
1471 </entry> | |
1472 | |
1473 <entry> | |
1474 <title>The Advent of Void: Day 20: xsnow</title> | |
1475 <link href="https://voidlinux.org/news/2018/12/advent-xs… | |
1476 <id>https://voidlinux.org/news/2018/12/advent-xsnow</id> | |
1477 <published>2018-12-20T00:00:00+00:00</published> | |
1478 <updated>2018-12-20T00:00:00+00:00</updated> | |
1479 <content type="xhtml"> | |
1480 <div xmlns="http://www.w3.org/1999/xhtml"> | |
1481 <p><p>If you’re dreaming of a white ch… | |
1482 and easy installation of xsnow!</p> | |
1483 | |
1484 <p>This small utility is best suited to window manager environments that | |
1485 do not tile, and will cause snow to fall on your desktop. The snow | |
1486 will collect on top of your windows and you’ll even have periodic | |
1487 visits from Santa flying across your desktop.</p> | |
1488 | |
1489 <p>Its a quick and fun utility, and worth a bit of Christmas cheer as we | |
1490 go into the final days of the Void Advent.</p> | |
1491 </p> | |
1492 </div> | |
1493 </content> | |
1494 </entry> | |
1495 | |
1496 | |
1497 </feed> |