Archived
1
0
Disbranĉigi 0
Ĉi tiu deponejo arĥiviĝis je 2024-01-29. Vi povas vidi kaj elŝuti dosierojn, sed ne povas puŝi nek raporti problemojn nek tirpeti.
rsss/t/rss1.xml

4110 lines
316 KiB
XML
Raw Normal View History

<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="https://planet.gnu.org/">
<title>Planet GNU</title>
<link>https://planet.gnu.org/</link>
<description>Planet GNU - https://planet.gnu.org/</description>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.fsf.org/blogs/rms/photo-blog-2019-june-brno"/>
<rdf:li rdf:resource="tag:dustycloud.org,2019-07-09:blog/racket-is-an-acceptable-python/"/>
<rdf:li rdf:resource="http://www.fsf.org/blogs/community/thank-you-for-advancing-free-software-read-fsf-spring-news-in-the-latest-bulletin"/>
<rdf:li rdf:resource="http://sigquit.wordpress.com/?p=1220"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9461"/>
<rdf:li rdf:resource="https://www.gnu.org/software/guile/news/gnu-guile-226-released.html"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9459"/>
<rdf:li rdf:resource="tag:dustycloud.org,2019-06-27:blog/how-do-spritelys-actor-and-storage-layers-tie-together/"/>
<rdf:li rdf:resource="http://www.fsf.org/blogs/community/gnu-spotlight-with-mike-gerwitz-17-new-gnu-releases-in-june"/>
<rdf:li rdf:resource="http://wingolog.org/2019/06/26/fibs-lies-and-benchmarks"/>
<rdf:li rdf:resource="http://www.fsf.org/blogs/gnu-press/emacs-t-shirts-available-now-at-the-gnu-press-shop"/>
<rdf:li rdf:resource="tag:dustycloud.org,2019-06-25:blog/lets-just-be-weird-together/"/>
<rdf:li rdf:resource="http://www.fsf.org/blogs/rms/drop-the-journalism-charges-against-julian-assange"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9457"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9456"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9453"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9451"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9450"/>
<rdf:li rdf:resource="https://www.gnu.org/software/guile/news/gnu-guile-225-released.html"/>
<rdf:li rdf:resource="http://www.fsf.org/events/event-20190904-madrid-gnuhackersmeeting"/>
<rdf:li rdf:resource="http://www.fsf.org/events/rms-20190715-frankfurt"/>
<rdf:li rdf:resource="https://gnu.org/software/guix/blog/2019/substitutes-are-now-available-as-lzip/"/>
<rdf:li rdf:resource="https://gnunet.org/#gnunet-0.11.5-release"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9442"/>
<rdf:li rdf:resource="http://wingolog.org/2019/06/03/pictie-my-c-to-webassembly-workbench"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9440"/>
<rdf:li rdf:resource="http://www.fsf.org/events/rms-20190622-mayhew"/>
<rdf:li rdf:resource="http://www.fsf.org/events/rms-20190607-vienna"/>
<rdf:li rdf:resource="https://www.gnu.org/software/guile/news/join-guile-guix-days-strasbourg-2019.html"/>
<rdf:li rdf:resource="http://www.fsf.org/events/rms-20190606-brno-smartcity"/>
<rdf:li rdf:resource="http://wingolog.org/2019/05/24/lightening-run-time-code-generation"/>
<rdf:li rdf:resource="https://www.gnu.org/software/guile/news/gnu-guile-292-beta-released.html"/>
<rdf:li rdf:resource="http://wingolog.org/2019/05/23/bigint-shipping-in-firefox"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9434"/>
<rdf:li rdf:resource="https://gnu.org/software/guix/blog/2019/creating-and-using-a-custom-linux-kernel-on-guix-system/"/>
<rdf:li rdf:resource="https://gnu.org/software/guix/blog/2019/gnu-guix-1.0.1-released/"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9433"/>
<rdf:li rdf:resource="http://www.fsf.org/news/six-more-devices-from-thinkpenguin-inc-now-fsf-certified-to-respect-your-freedom"/>
<rdf:li rdf:resource="https://gnunet.org/#gnunet-0.11.4-release"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9432"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9431"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9430"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9429"/>
<rdf:li rdf:resource="https://gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9426"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9425"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9424"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9423"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9422"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9419"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9417"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9415"/>
<rdf:li rdf:resource="https://gnunet.org/#gnunet-0.11.2-release"/>
<rdf:li rdf:resource="https://gnunet.org/#gnunet-0.11.1-release"/>
<rdf:li rdf:resource="https://gnu.org/software/guix/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9405"/>
<rdf:li rdf:resource="http://savannah.gnu.org/forum/forum.php?forum_id=9404"/>
<rdf:li rdf:resource="http://www.fsf.org/news/fsf-job-opportunity-campaigns-manager-1"/>
<rdf:li rdf:resource="http://www.fsf.org/news/openstreetmap-and-deborah-nicholson-win-2018-fsf-awards"/>
<rdf:li rdf:resource="http://www.fsf.org/news/openstreetmap-and-deborah-nicholson-win-2019-fsf-awards"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.fsf.org/blogs/rms/photo-blog-2019-june-brno">
<title>FSF Blogs: June 2019: Photos from Brno</title>
<link>http://www.fsf.org/blogs/rms/photo-blog-2019-june-brno</link>
<content:encoded>&lt;div style=&quot;border-style: solid; border-width: 2px; text-align: left; margin: 4px 50px 4px 50px; padding-top: 4px; padding-left: 5px; padding-right: 5px;&quot;&gt;
&lt;p&gt;Free Software Foundation president Richard Stallman (RMS) was in
&lt;strong&gt;Brno, Czech Republic&lt;/strong&gt; on June 6, 2019, to give two speeches.&lt;/p&gt;
&lt;p&gt;In the morning, he took part in the &lt;a href=&quot;https://www.smartcityfair.cz/en/&quot;&gt;URBIS Smart City Fair&lt;/a&gt;, at the Brno Fair Grounds, giving his speech
&quot;Computing, freedom, and privacy.&quot;&lt;sup style=&quot;font-size: 8px;&quot;&gt;&lt;a href=&quot;https://static.fsf.org/fsforg/rss/blogs.xml#fn1&quot; id=&quot;ref1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-fair-grounds/20190606-brno-c-2019-veletrhy-brno-a-s-cc-by-4-0-1-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-fair-grounds/20190606-brno-c-2019-veletrhy-brno-a-s-cc-by-4-0-2-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-fair-grounds/20190606-brno-c-2019-veletrhy-brno-a-s-cc-by-4-0-3-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;/p&gt;
&lt;p style=&quot;padding: 0px 20px 0px 20px; margin-top: 1px; text-align: center;&quot;&gt;
&lt;em&gt;(Copyright © 2019 Veletrhy Brno, a. s. Photos licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by/4.0/&quot;&gt;CC BY 4.0&lt;/a&gt;.)&lt;/em&gt;
&lt;br style=&quot;margin-bottom: 15px;&quot; /&gt;
&lt;/p&gt;&lt;p&gt;In the afternoon, at the University Cinema Scala, he gave his
speech &quot;The free software movement and the GNU/Linux operating
system,&quot; to about three hundred people.
&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-jan-prokopius-cc-by-4-0-1-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;/p&gt;&lt;p style=&quot;padding: 0px 20px 0px 20px; margin-top: 1px; text-align: center;&quot;&gt;
&lt;em&gt;(Copyright © 2019 Pavel Loutocký. Photos licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by/4.0/&quot;&gt;CC BY 4.0&lt;/a&gt;.)&lt;/em&gt;
&lt;br style=&quot;margin-bottom: 15px;&quot; /&gt;
&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-047-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-050-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-051-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-052-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-053-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-054-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-055-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-056-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-057-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-058-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-064-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-063-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-066-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-069-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-070-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-071-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-073-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-074-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-068-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-072-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-075-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-076-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-078-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-079-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-080-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-081-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-082-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-083-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-084-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-085-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-086-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-087-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-088-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-090-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-091-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-092-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-093-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-094-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;133&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-095-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;132&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-114-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-115-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-116-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-117-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-120-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;265&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-121-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-124-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-126-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-128-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-132-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-131-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-133-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-134-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-135-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-136-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-140-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-137-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-141-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-143-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-145-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-146-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;176&quot; /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://static.fsf.org/static/nosvn/rms-photos/20190606-brno-scala/20190606-brno-c-2019-pavel-loutocky-cc-by-4-0-144-thumb.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;530&quot; /&gt;
&lt;/p&gt;
&lt;p style=&quot;padding: 0px 20px 0px 20px; margin-top: 1px; text-align: center;&quot;&gt;
&lt;em&gt;(Copyright © 2019 Pavel Loutocký. Photos licensed under &lt;a href=&quot;http://creativecommons.org/licenses/by/4.0/&quot;&gt;CC BY 4.0&lt;/a&gt;.)&lt;/em&gt;
&lt;br style=&quot;margin-bottom: 15px;&quot; /&gt;
&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;Thank you to everyone who made this visit possible!&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;If you&#39;re in the area, please fill out our contact form, so
that we can inform you about future events in and around &lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=578&amp;amp;reset=1&quot;&gt;Brno&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Please see &lt;a href=&quot;http://www.fsf.org/events&quot;&gt;www.fsf.org/events&lt;/a&gt; for a full
list of all of RMS&#39;s confirmed engagements, &lt;br /&gt; and contact &lt;a href=&quot;mailto:rms-assist@gnu.org&quot;&gt;rms-assist@gnu.org&lt;/a&gt; if you&#39;d like
him to come speak.&lt;/p&gt;
&lt;hr /&gt;
&lt;sup id=&quot;fn1&quot;&gt;1. The recording will soon be posted on &lt;a href=&quot;http://audio-video.gnu.org&quot;&gt;our audio-video archive&lt;/a&gt;.&lt;a href=&quot;https://static.fsf.org/fsforg/rss/blogs.xml#ref1&quot; title=&quot;Jump back to footnote 1 in the text.&quot;&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;&lt;/div&gt;</content:encoded>
<dc:date>2019-07-09T15:39:21+00:00</dc:date>
<dc:creator>FSF Blogs</dc:creator>
</item>
<item rdf:about="tag:dustycloud.org,2019-07-09:blog/racket-is-an-acceptable-python/">
<title>Christopher Allan Webber: Racket is an acceptable Python</title>
<link>http://dustycloud.org/blog/racket-is-an-acceptable-python/</link>
<content:encoded>&lt;p&gt;A little over a decade ago, there were some popular blogposts about whether
&lt;a class=&quot;reference external&quot; href=&quot;http://www.randomhacks.net/2005/12/03/why-ruby-is-an-acceptable-lisp/&quot;&gt;Ruby was an acceptable Lisp&lt;/a&gt;
or whether even
&lt;a class=&quot;reference external&quot; href=&quot;https://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html&quot;&gt;Lisp was an acceptable Lisp&lt;/a&gt;.
Peter Norvig was also writing at the time
&lt;a class=&quot;reference external&quot; href=&quot;https://norvig.com/python-lisp.html&quot;&gt;introducing Python to Lisp programmers&lt;/a&gt;.
Lisp, those in the know knew, was the right thing to strive for, and yet
seemed unattainable for anything aimed for production since the AI Winter
shattered Lisp&#39;s popularity in the 80s/early 90s.
If you can&#39;t get Lisp, what&#39;s closest thing you can get?&lt;/p&gt;
&lt;p&gt;This was around the time I was starting to program; I had spent some
time configuring my editor with Emacs Lisp and loved every moment I
got to do it; I read some Lisp books and longed for more.
And yet when I tried to &quot;get things done&quot; in the language, I just
couldn&#39;t make as much headway as I could with my preferred language
for practical projects at the time: Python.&lt;/p&gt;
&lt;p&gt;Python was great... mostly.
It was easy to read, it was easy to write, it was easy-ish to teach
to newcomers.
(Python&#39;s intro material is better than most, but &lt;a class=&quot;reference external&quot; href=&quot;https://mlemmer.org/&quot;&gt;my spouse&lt;/a&gt; has talked before about some major pitfalls
that the Python documentation has which make getting started
unnecessarily hard.
You can
&lt;a class=&quot;reference external&quot; href=&quot;https://www.youtube.com/watch?v=pv0lLciMI24&amp;amp;t=4220s&quot;&gt;hear her talk about that&lt;/a&gt;
at this talk we co-presented on at last year&#39;s RacketCon.)
I ran a large free software project on a Python codebase, and it was
easy to get new contributors; the barrier to entry to becoming a
programmer with Python was low.
I consider that to be a feature, and it certainly helped me bootstrap
my career.&lt;/p&gt;
&lt;p&gt;Most importantly of all though, Python was easy to pick up and run with
because no matter what you wanted to do, either the tools came built
in or the Python ecosystem had enough of the pieces nearby that building
what you wanted was usually fairly trivial.&lt;/p&gt;
&lt;p&gt;But Python has its limitations, and I always longed for a lisp.
For a brief time, I thought I could get there by contributing to the
&lt;a class=&quot;reference external&quot; href=&quot;https://hy.readthedocs.io/en/stable/&quot;&gt;Hy project&lt;/a&gt;, which was a lisp
that transformed itself into the Python AST.
&quot;Why write Python in a syntax that&#39;s easy to read when you could add
a bunch of parentheses to it instead?&quot; I would joke when I talked about
it.
Believe it or not though, I do consider lisps easier to read, once you
are comfortable to understand their syntax.
I certainly find them easier to write and modify.
And I longed for the metaprogramming aspects of Lisp.&lt;/p&gt;
&lt;p&gt;Alas, Hy didn&#39;t really reach my dream.
That macro expansion made debugging a nightmare as Hy would lose track
of where the line numbers are; it wasn&#39;t until that when I really realized
that without line numbers, you&#39;re just lost in terms of debugging in
Python-land.
That and Python didn&#39;t really have the right primitives; immutable
datastructures for whatever reason never became first class, meaning
that functional programming was hard, &quot;cons&quot; didn&#39;t really exist
(actually this doesn&#39;t matter as much as people might think), recursive
programming isn&#39;t really as possible without tail call elimination, etc
etc etc.&lt;/p&gt;
&lt;p&gt;But I missed parentheses.
I longed for parentheses.
I &lt;em&gt;dreamed in&lt;/em&gt; parentheses.
I&#39;m not kidding, the only dreams I&#39;ve ever had in code were in lisp,
and it&#39;s happened multiple times, programs unfolding before me.
The structure of lisp makes the flow of code so clear, and there&#39;s
simply nothing like the comfort of developing in front of a lisp REPL.&lt;/p&gt;
&lt;p&gt;Yet to choose to use a lisp seemed to mean opening myself up to
eternal yak-shaving of developing packages that were already available
on the Python Package Index or limiting my development community an
elite group of Emacs users.
When I was in Python, I longed for the beauty of a Lisp; when I was in
a Lisp, I longed for the ease of Python.&lt;/p&gt;
&lt;p&gt;All this changed when I discovered Racket:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Racket comes with a full-featured editor named DrRacket built-in
that&#39;s damn nice to use.
It has all the features that make lisp hacking comfortable previously
mostly only to Emacs users: parenthesis balancing, comfortable REPL
integration, etc etc.
But if you want to use Emacs, you can use racket-mode.
Win-win.&lt;/li&gt;
&lt;li&gt;Racket has intentionally been built as an educational language, not
unlike Python.
One of the core audiences of Racket is middle schoolers, and it even
comes with a built-in game engine for kids.&lt;/li&gt;
&lt;li&gt;My spouse and I even taught classes about how to learn to program for
&lt;a class=&quot;reference external&quot; href=&quot;https://dustycloud.org/misc/digital-humanities/&quot;&gt;humanities academics&lt;/a&gt;
using Racket.
We found the age-old belief that &quot;lisp syntax is just too hard&quot; is
simply false; the main thing that most people lack is decent lisp-friendly
tooling with a low barrier to entry, and DrRacket provides that.
The only people who were afraid of the parentheses turned out to be people
who already knew how to program.
Those who didn&#39;t even praised the syntax for its clarity and the way
the editor could help show you when you made a syntax error
(DrRacket is very good at that).
&quot;Lisp is too hard to learn&quot; is a lie; if middle schoolers can learn it,
so can more seasoned programmers.&lt;/li&gt;
&lt;li&gt;Racket might even be &lt;em&gt;more&lt;/em&gt; batteries included than Python.
At least all the batteries that come included are generally nicer;
&lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/gui/&quot;&gt;Racket&#39;s GUI library&lt;/a&gt; is the only
time I&#39;ve ever had fun in my life writing GUI programs (and they&#39;re cross
platform too).
Constructing pictures with its &lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/pict/index.html&quot;&gt;pict&lt;/a&gt;
library is a delight.
Plotting graphs with &lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/plot/index.html&quot;&gt;plot&lt;/a&gt;
is an incredible experience.
Writing documentation with
&lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/scribble/index.html&quot;&gt;Scribble&lt;/a&gt;
is the best non-org-mode experience I&#39;ve ever had, but has the
advantage over org-mode in that your document is just inverted code.
I could go on.
And these are just some packages bundled with Racket; the
&lt;a class=&quot;reference external&quot; href=&quot;https://pkgs.racket-lang.org&quot;&gt;Package repository&lt;/a&gt; contains much more.&lt;/li&gt;
&lt;li&gt;Racket&#39;s documentation is, in my experience, unparalleled.
The &lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/guide/index.html&quot;&gt;Racket Guide&lt;/a&gt; walks
you through all the key concepts, and the
&lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/reference/index.html&quot;&gt;Racket Reference&lt;/a&gt;
has everything else you need.&lt;/li&gt;
&lt;li&gt;The tutorials are also wonderful; the
&lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/quick/index.html&quot;&gt;introductory tutorial&lt;/a&gt;
gets your feet wet not through composing numbers or strings but by
building up pictures.
Want to learn more?
The next two tutorials show you how to
&lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/continue/index.html&quot;&gt;build web applications&lt;/a&gt;
and then
&lt;a class=&quot;reference external&quot; href=&quot;https://docs.racket-lang.org/more/index.html&quot;&gt;build your own web server&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Like Python, even though Racket has its roots in education, it is more than
ready for serious practical use.
These days, when I want to build something and get it done quickly
and efficiently, I reach for Racket first.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Racket is a great Lisp, but it&#39;s also an acceptable Python.
Sometimes you really can have it all.&lt;/p&gt;</content:encoded>
<dc:date>2019-07-09T14:27:00+00:00</dc:date>
<dc:creator>Christopher Lemmer Webber</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/blogs/community/thank-you-for-advancing-free-software-read-fsf-spring-news-in-the-latest-bulletin">
<title>FSF Blogs: Thank you for advancing free software: Read FSF spring news in the latest Bulletin</title>
<link>http://www.fsf.org/blogs/community/thank-you-for-advancing-free-software-read-fsf-spring-news-in-the-latest-bulletin</link>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.fsf.org/appeal&quot;&gt;&lt;img alt=&quot;ThankGNU Star Supporter&quot; src=&quot;https://static.fsf.org/nosvn/images/badges/Spring19-lock-in.png&quot; style=&quot;margin-top: 4px;&quot; width=&quot;650&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href=&quot;https://www.fsf.org/appeal&quot;&gt;
&lt;/a&gt;&lt;p&gt;&lt;a href=&quot;https://www.fsf.org/appeal&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.fsf.org/bulletin/2019/spring/issue-34-spring-2019&quot;&gt;Our &lt;em&gt;Bulletin&lt;/em&gt;&lt;/a&gt; highlights some important activities and issues in free software
over the last six months, including:&lt;/p&gt;
&lt;p&gt;It highlights some important activities and issues in free software
over the last six months, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;an educational program we launched, together with free software
activist &lt;a href=&quot;https://www.fsf.org/bulletin/2019/spring/fsf-teaches-free-software-to-public-school-youth&quot;&gt;Devin Ulibarri&lt;/a&gt;, where we used the program Music Blocks
to teach Boston area public school youth about coding and free
software, and then proceeded to donate ten fully freed laptops to the
schools we visited;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;some ideas on how the free software community can do better to bring
visibility to our movement, according to LibrePlanet 2019 conference
speaker and free software activist &lt;a href=&quot;https://www.fsf.org/bulletin/2019/spring/sparking-change-what-free-software-can-learn-from-social-justice-movements&quot;&gt;Mary Kate Fain&lt;/a&gt;, pulled from
her superb LibrePlanet talk &lt;a href=&quot;https://media.libreplanet.org/u/libreplanet/m/sparking-change-what-free-software-can-learn-from-successful-social-movements/&quot;&gt;“Sparking change: What free software
can learn from social justice movements”&lt;/a&gt;; and&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;our licensing and compliance manager, &lt;a href=&quot;https://www.fsf.org/bulletin/2019/spring/what-respects-your-freedom-is-for-and-what-it-isnt&quot;&gt;Donald Robertson, III,
reports&lt;/a&gt; on the progress of our Respects Your Freedom program,
with further explanation on the parameters needed for the
certification of hardware devices that meet FSF&#39;s criteria for
protecting the rights of users.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thirty-five volunteers joined FSF staff over the course of three
days to get all the &lt;em&gt;Bulletins&lt;/em&gt; stuffed in envelopes and mailed out. This was a
great opportunity to catch up on free software issues with some of our
most dedicated free software enthusiasts here in Boston. We are
grateful to have such a strong core of supporters that keep the
movement growing, and thanks to your generous contribution, we
will be even stronger.&lt;/p&gt;
&lt;p&gt;Please be vocal about your support for free software. &lt;a href=&quot;https://www.fsf.org/bulletin/2019/spring/issue-34-spring-2019&quot;&gt;Read and share
the &lt;em&gt;Bulletin&lt;/em&gt; articles&lt;/a&gt; online using the #ISupportFreeSoftware
hashtag, use our &lt;a href=&quot;https://www.fsf.org/resources/badges&quot;&gt;fundraiser support images&lt;/a&gt;, and talk to your
community about why you support the FSF. It makes a difference.&lt;/p&gt;
&lt;p&gt;Throughout our spring fundraiser, we have been enjoying both the
public posts from supporters using the hashtag on &lt;a href=&quot;https://www.fsf.org/share&quot;&gt;social media&lt;/a&gt;,
as well as answers to the &quot;What inspired you to join today?&quot; question
we ask new members. Here are some of our favorites.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We see many excited calls for user freedom and user control: &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&quot;For freedom!&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&quot;Does the software you use grant you the freedom to
redistribute copies so you can help others? #FreeSoftware
does. Learn more by listening to Richard M. Stallman, on the
&lt;a href=&quot;https://www.makingbetterpod.com/2019/06/17/making-better-episode-4-richard-stallman/&quot;&gt;Making Better podcast&lt;/a&gt;. #ISupportFreeSoftware&quot;&lt;/em&gt; from
@makingbetterpod&lt;/li&gt;
&lt;li&gt;@mmaug shared: &lt;em&gt;&quot;There are alternatives to Facebook, Microsoft,
Google, and Twitter. Take control of your privacy, and your
computer! #ISupportFreeSoftware #FSF&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;@globalspectator posted: &lt;em&gt;&quot;Software you don&#39;t control seizes
control over you. Help @fsf break the chains of proprietary
software for a freer future #ISupportFreeSoftware&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We receive humbling thank you&#39;s from people appreciating our
work, naming the &lt;a href=&quot;https://media.libreplanet.org/&quot;&gt;LibrePlanet conference&lt;/a&gt;, our &lt;a href=&quot;https://www.fsf.org/licensing/&quot;&gt;licensing work&lt;/a&gt;, and the
&lt;a href=&quot;https://www.gnu.org/&quot;&gt;GNU Project&lt;/a&gt;:&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&quot;Wanted to for a long time. Also, LibrePlanet!&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&quot;Gratitude. And a long lasting debt feeling. Thanks so much!&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&quot;As a software developer and GNU/Linux user I want to set a
statement and do my part in keeping free software popular&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&quot;I use GNU tools, and have since the beginning&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;And most importantly, we hear from people who have come across our
activities and campaign images online, or who were informed about
FSF through their on- and offline community and decided to take
action -- convincing us that people inspiring each other to join the
&lt;a href=&quot;https://www.fsf.org/free-software-supporter/&quot;&gt;&lt;em&gt;Free Software Supporter&lt;/em&gt; mailing list&lt;/a&gt;, or to &lt;a href=&quot;https://my.fsf.org/join?pk_campaign=fr_sp2019&amp;amp;pk_source=email2&quot;&gt;become an associate
member&lt;/a&gt; is by far the most powerful way to expand our reach and
strengthen our message: &lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&quot;I watched an interview with Richard Stallman&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&quot;A friend&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&quot;A post in the &lt;a href=&quot;https://victorhckinthefreeworld.com/2019/06/27/la-free-software-foundation-quiere-redoblar-la-comunidad-del-software-libre-isupportfreesoftware/&quot;&gt;&#39;Victorhck in the free world&#39;&lt;/a&gt; blog&quot;&lt;/em&gt; &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;@opc_5 called for digital liberation through free software: &lt;em&gt;&quot;Software Libre para la
liberación digital. #ISupportFreeSoftware&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;@AugustinPMichel tagged his connections with: &lt;em&gt;&quot;#ISupportFreeSoftware, do you?&quot;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Today, we have one week left in our &lt;a href=&quot;https://www.fsf.org/appeal?pk_campaign=fr_sp2019&amp;amp;pk_source=email2&quot;&gt;spring fundraiser&lt;/a&gt;, and we are
confident we will achieve our membership goal of 200 members in 28
days if we keep at it. With your help, we may engage enough
people to also reach 400 &lt;a href=&quot;https://my.fsf.org/donate?pk_campaign=fr_sp2019&amp;amp;pk_source=email2&quot;&gt;donations&lt;/a&gt; before the 15th of July. Your
support helped get us where we are, in position to succeed. Your
generosity and outspokenness fuel our message, increase our reach, and
will allow us to continue to advocate on your behalf.&lt;/p&gt;
&lt;p&gt;Thank you for your contribution to free software.&lt;/p&gt;</content:encoded>
<dc:date>2019-07-09T04:55:00+00:00</dc:date>
<dc:creator>FSF Blogs</dc:creator>
</item>
<item rdf:about="http://sigquit.wordpress.com/?p=1220">
<title>Aleksander Morgado: DW5821e firmware update integration in ModemManager and fwupd</title>
<link>https://sigquit.wordpress.com/2019/07/03/dw5821e-firmware-update-integration-in-modemmanager-and-fwupd/</link>
<content:encoded>&lt;p&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1222&quot; height=&quot;522&quot; src=&quot;https://sigquit.files.wordpress.com/2019/07/dw5821e-image.png?w=604&amp;amp;h=522&quot; width=&quot;604&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Dell Wireless 5821e&lt;/strong&gt; module is a &lt;a href=&quot;https://www.qualcomm.com/products/snapdragon-modems-4g-lte-x20&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Qualcomm SDX20&lt;/a&gt; based LTE Cat16 device. This modem can work in either MBIM mode or QMI mode, and provides different USB layouts for each of the modes. In Linux kernel based and Windows based systems, the MBIM mode is the default one, because it provides easy integration with the OS (e.g. no additional drivers or connection managers required in Windows) and also provides all the features that QMI provides through QMI over MBIM operations.&lt;/p&gt;
&lt;p&gt;The firmware update process of this DW5821e module is integrated in your GNU/Linux distribution, since &lt;a href=&quot;https://lists.freedesktop.org/archives/modemmanager-devel/2019-January/006983.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;ModemManager 1.10.0&lt;/a&gt; and &lt;a href=&quot;https://groups.google.com/forum/#!msg/fwupd/HXavD9QqW4Q/WAsKVunxBQAJ&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;fwupd 1.2.6&lt;/a&gt;. There is no official firmware released in the LVFS (yet) but the setup is completely ready to be used, just waiting for Dell to publish an initial official firmware release.&lt;/p&gt;
&lt;p&gt;The firmware update integration between ModemManager and fwupd involves different steps, which Ill try to describe here so that its clear how to add support for more devices in the future.&lt;/p&gt;
&lt;h2&gt;1) ModemManager reports expected update methods, firmware version and device IDs&lt;/h2&gt;
&lt;p&gt;The Firmware interface in the modem object exposed in DBus contains, since MM 1.10, a new &lt;a href=&quot;https://www.freedesktop.org/software/ModemManager/api/latest/gdbus-org.freedesktop.ModemManager1.Modem.Firmware.html#gdbus-property-org-freedesktop-ModemManager1-Modem-Firmware.UpdateSettings&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;UpdateSettings&lt;/a&gt; property that provides a bitmask specifying which is the expected firmware update method (or methods) required for a given module, plus a dictionary of key-value entries specifying settings applicable to each of the update methods.&lt;/p&gt;
&lt;p&gt;In the case of the DW5821e, two update methods are reported in the bitmask: “&lt;strong&gt;fastboot&lt;/strong&gt;” and “&lt;strong&gt;qmi-pdc&lt;/strong&gt;“, because both are required to have a complete firmware upgrade procedure. “fastboot” would be used to perform the system upgrade by using an OTA update file, and “qmi-pdc” would be used to install the per-carrier configuration files after the system upgrade has been done.&lt;/p&gt;
&lt;p&gt;The list of settings provided in the dictionary contain the two mandatory fields required for all devices that support at least one firmware update method: “device-ids” and “version”. These two fields are designed so that fwupd can fully rely on them during its operation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The “&lt;strong&gt;device-ids&lt;/strong&gt;” field will include a list of strings providing the device IDs associated to the device, sorted from the most specific to the least specific. These device IDs are the ones that fwupd will use to build the GUIDs required to match a given device to a given firmware package. The DW5821e will expose four different device IDs:
&lt;ul&gt;
&lt;li&gt;“USB\&lt;strong&gt;VID_413C&lt;/strong&gt;“: specifying this is a Dell-branded device.&lt;/li&gt;
&lt;li&gt;“USB\VID_413C&amp;amp;&lt;strong&gt;PID_81D7&lt;/strong&gt;“: specifying this is a DW5821e module.&lt;/li&gt;
&lt;li&gt;“USB\VID_413C&amp;amp;PID_81D7&amp;amp;&lt;strong&gt;REV_0318&lt;/strong&gt;“: specifying this is hardware revision 0x318 of the DW5821e module.&lt;/li&gt;
&lt;li&gt;“USB\VID_413C&amp;amp;PID_81D7&amp;amp;REV_0318&amp;amp;&lt;strong&gt;CARRIER_VODAFONE&lt;/strong&gt;“: specifying this is hardware revision 0x318 of the DW5821e module running with a Vodafone-specific carrier configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The “&lt;strong&gt;version&lt;/strong&gt;” field will include the firmware version string of the module, using the same format as used in the firmware package files used by fwupd. This requirement is obviously very important, because if the format used is different, the simple version string comparison used by fwupd (literally ASCII string comparison) would not work correctly. It is also worth noting that if the carrier configuration is also versioned, the version string should contain not only the version of the system, but also the version of the carrier configuration. The DW5821e will expose a firmware version including both, e.g. “T77W968.F1.1.1.1.1.VF.001” (system version being F1.1.1.1.1 and carrier config version being “VF.001”)&lt;/li&gt;
&lt;li&gt;In addition to the mandatory fields, the dictionary exposed by the DW5821e will also contain a “&lt;strong&gt;fastboot-at&lt;/strong&gt;” field specifying which AT command can be used to switch the module into fastboot download mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2) fwupd matches GUIDs and checks available firmware versions&lt;/h2&gt;
&lt;p&gt;Once fwupd detects a modem in ModemManager that is able to expose the correct UpdateSettings property in the Firmware interface, it will add the device as a known device that may be updated in its own records. The device exposed by fwupd will contain the &lt;a href=&quot;https://en.wikipedia.org/wiki/Universally_unique_identifier&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;GUIDs&lt;/strong&gt;&lt;/a&gt; built from the “device-ids” list of strings exposed by ModemManager. E.g. for the “USB\VID_413C&amp;amp;PID_81D7&amp;amp;REV_0318&amp;amp;CARRIER_VODAFONE” device ID, fwupd will use GUID “b595e24b-bebb-531b-abeb-620fa2b44045”.&lt;/p&gt;
&lt;p&gt;fwupd will then be able to look for firmware packages (CAB files) available in the &lt;a href=&quot;https://fwupd.org/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;LVFS&lt;/a&gt; that are associated to any of the GUIDs exposed for the DW5821e.&lt;/p&gt;
&lt;p&gt;The CAB files packaged for the LVFS will contain one single firmware OTA file plus one carrier MCFG file for each supported carrier in the give firmware version. The CAB files will also contain one “metainfo.xml” file for each of the supported carriers in the released package, so that per-carrier firmware upgrade paths are available: only firmware updates for the currently used carrier should be considered. E.g. we dont want users running with the Vodafone carrier config to get notified of upgrades to newer firmware versions that arent certified for the Vodafone carrier.&lt;/p&gt;
&lt;p&gt;Each of the CAB files with multiple “metainfo.xml” files will therefore be associated to multiple GUID/version pairs. E.g. the same CAB file will be valid for the following GUIDs (using Device ID instead of GUID for a clearer explanation, but really the match is per GUID not per Device ID):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Device ID “USB\VID_413C&amp;amp;PID_81D7&amp;amp;REV_0318&amp;amp;CARRIER_VODAFONE” providing version “T77W968.F1.2.2.2.2.VF.002”&lt;/li&gt;
&lt;li&gt;Device ID “USB\VID_413C&amp;amp;PID_81D7&amp;amp;REV_0318&amp;amp;CARRIER_TELEFONICA” providing version “T77W968.F1.2.2.2.2.TF.003”&lt;/li&gt;
&lt;li&gt;Device ID “USB\VID_413C&amp;amp;PID_81D7&amp;amp;REV_0318&amp;amp;CARRIER_VERIZON” providing version “T77W968.F1.2.2.2.2.VZ.004”&lt;/li&gt;
&lt;li&gt;… and so on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Following our example, fwupd will detect our device exposing device ID “USB\VID_413C&amp;amp;PID_81D7&amp;amp;REV_0318&amp;amp;CARRIER_VODAFONE” and version “T77W968.F1.1.1.1.1.VF.001” in ModemManager and will be able to find a CAB file for the same device ID providing a newer version “T77W968.F1.2.2.2.2.VF.002” in the LVFS. The firmware update is possible!&lt;/p&gt;
&lt;h2&gt;3) fwupd requests device inhibition from ModemManager&lt;/h2&gt;
&lt;p&gt;In order to perform the firmware upgrade, fwupd requires full control of the modem. Therefore, when the firmware upgrade process starts, fwupd will use the new &lt;a href=&quot;https://www.freedesktop.org/software/ModemManager/api/latest/gdbus-org.freedesktop.ModemManager1.html#gdbus-method-org-freedesktop-ModemManager1.InhibitDevice&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;InhibitDevice&lt;/a&gt;(TRUE) method in the Manager DBus interface of ModemManager to request that a specific modem with a specific uid should be inhibited. Once the device is inhibited in ModemManager, it will be disabled and removed from the list of modems in DBus, and no longer used until the inhibition is removed.&lt;/p&gt;
&lt;p&gt;The inhibition may be removed by calling InhibitDevice(FALSE) explicitly once the firmware upgrade is finished, and will also be automatically removed if the program that requested the inhibition disappears from the bus.&lt;/p&gt;
&lt;h2&gt;4) fwupd downloads CAB file from LVFS and performs firmware update&lt;/h2&gt;
&lt;p&gt;Once the modem is inhibited in ModemManager, fwupd can right away start the firmware update process. In the case of the DW5821e, the firmware update requires two different methods and two different upgrade cycles.&lt;/p&gt;
&lt;p&gt;The first step would be to reboot the module into &lt;strong&gt;fastboot&lt;/strong&gt; download mode using the AT command specified by ModemManager in the “at-fastboot” entry of the “UpdateSettings” property dictionary. After running the AT command, the module will reset itself and reboot with a completely different USB layout (and different vid:pid) that fwupd can detect as being the same device as before but in a different working mode. Once the device is in fastboot mode, fwupd will download and install the OTA file using the fastboot protocol, as defined in the “flashfile.xml” file provided in the CAB file:&lt;/p&gt;
&lt;pre&gt;&amp;lt;parts interface=&quot;AP&quot;&amp;gt;
&amp;lt;part operation=&quot;flash&quot; partition=&quot;ota&quot; filename=&quot;T77W968.F1.2.2.2.2.AP.123_ota.bin&quot; MD5=&quot;f1adb38b5b0f489c327d71bfb9fdcd12&quot;/&amp;gt;
&amp;lt;/parts&amp;gt;&lt;/pre&gt;
&lt;p&gt;Once the OTA file is completely downloaded and installed, fwupd will trigger a reset of the module also using the fastboot protocol, and the device will boot from scratch on the newly installed firmware version. During this initial boot, the module will report itself running in a “default” configuration not associated to any carrier, because the OTA file update process involves fully removing all installed carrier-specific MCFG files.&lt;/p&gt;
&lt;p&gt;The second upgrade cycle performed by fwupd once the modem is detected again involves downloading all carrier-specific MCFG files one by one into the module using the &lt;strong&gt;QMI PDC&lt;/strong&gt; protocol. Once all are downloaded, fwupd will activate the specific carrier configuration that was previously active before the download was started. E.g. if the module was running with the Vodafone-specific carrier configuration before the upgrade, fwupd will select the Vodafone-specific carrier configuration after the upgrade. The module would be reseted one last time using the QMI DMS protocol as a last step of the upgrade procedure.&lt;/p&gt;
&lt;h2&gt;5) fwupd removes device inhibition from ModemManager&lt;/h2&gt;
&lt;p&gt;The upgrade logic will finish by removing the device inhibition from ModemManager using InhibitDevice(FALSE) explicitly. At that point, ModemManager would re-detect and re-probe the modem from scratch, which should already be running in the newly installed firmware and with the newly selected carrier configuration.&lt;/p&gt;</content:encoded>
<dc:date>2019-07-03T13:27:10+00:00</dc:date>
<dc:creator>aleksander</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9461">
<title>rush @ Savannah: Version 2.0</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9461</link>
<content:encoded>&lt;p&gt;Version 2.0 is available for download from &lt;a href=&quot;https://ftp.gnu.org/gnu/rush/rush-2.0.tar.xz&quot;&gt;GNU&lt;/a&gt; and &lt;a href=&quot;http://download.gnu.org.ua/release/rush/rush-2.0.tar.xz&quot;&gt;Puszcza&lt;/a&gt; archives.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This release features a complete rewrite of the configuration support. It introduces a new configuration file syntax that offers a large set of control structures and transformation instructions for handling arbitrary requests.  Please see the documentation for details.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Backward compatibility with prior releases is retained and old configuration syntax is still supported.  This ensures that existing installations will remain operational without any changes. Nevertheless, system administrators are encouraged to switch to the new syntax as soon as possible.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-07-01T08:15:26+00:00</dc:date>
<dc:creator>Sergey Poznyakoff</dc:creator>
</item>
<item rdf:about="https://www.gnu.org/software/guile/news/gnu-guile-226-released.html">
<title>GNU Guile: GNU Guile 2.2.6 released</title>
<link>https://www.gnu.org/software/guile/news/gnu-guile-226-released.html</link>
<content:encoded>&lt;p&gt;We are pleased to announce GNU Guile 2.2.6, the sixth bug-fix
release in the new 2.2 stable release series. This release represents
11 commits by 4 people since version 2.2.5. First and foremost, it
fixes a &lt;a href=&quot;https://issues.guix.gnu.org/issue/36350&quot;&gt;regression&lt;/a&gt; introduced
in 2.2.5 that would break Guiles built-in HTTP server.&lt;/p&gt;&lt;p&gt;See the &lt;a href=&quot;https://lists.gnu.org/archive/html/guile-devel/2019-06/msg00059.html&quot;&gt;release
announcement&lt;/a&gt;
for details.&lt;/p&gt;</content:encoded>
<dc:date>2019-06-30T21:55:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9459">
<title>trans-coord @ Savannah: Malayalam team re-established</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9459</link>
<content:encoded>&lt;p&gt;After more than 8 years of being orphaned, Malayalam team is active again.  The new team leader, Aiswarya Kaitheri Kandoth, made a new translation of the &lt;a href=&quot;https://www.gnu.org/philosophy/free-sw.html&quot;&gt;Free Software Definition&lt;/a&gt;, so now we have 41 translations of that page!
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Currently, Malayalam the only active translation team of official languages of India.  It is a Dravidian language spoken by about 40 million people worldwide, with the most speakers living in the Indian state of Kerala.  Like many Indian languages, it uses a syllabic script derived from Brahmi.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/gnun/reports/report-ml.html#complete&quot;&gt;Links to up-to-date translations&lt;/a&gt; are shown on the automatically generated &lt;a href=&quot;https://www.gnu.org/software/gnun/reports/report-ml.html&quot;&gt;report page&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-29T06:54:45+00:00</dc:date>
<dc:creator>Ineiev</dc:creator>
</item>
<item rdf:about="tag:dustycloud.org,2019-06-27:blog/how-do-spritelys-actor-and-storage-layers-tie-together/">
<title>Christopher Allan Webber: How do Spritely&#39;s actor and storage layers tie together?</title>
<link>http://dustycloud.org/blog/how-do-spritelys-actor-and-storage-layers-tie-together/</link>
<content:encoded>&lt;p&gt;I&#39;ve been hacking away at &lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/spritely&quot;&gt;Spritely&lt;/a&gt;
(see &lt;a class=&quot;reference external&quot; href=&quot;https://dustycloud.org/blog/tag/spritely/&quot;&gt;previously&lt;/a&gt;).
Recently I&#39;ve been making progress on both the actor model
(&lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/spritely/goblins&quot;&gt;goblins&lt;/a&gt; and its rewrite
&lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/spritely/goblinoid&quot;&gt;goblinoid&lt;/a&gt;) as well as
the storage layers (currently called
&lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/dustyweb/magenc/blob/master/magenc/scribblings/intro.org&quot;&gt;Magenc&lt;/a&gt;
and &lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/spritely/crystal/blob/master/crystal/scribblings/intro.org&quot;&gt;Crystal&lt;/a&gt;,
but we are talking about probably renaming the both of them into a
suite called &quot;datashards&quot;... yeah, everything is moving and changing
fast right now.)&lt;/p&gt;
&lt;p&gt;In the &lt;a class=&quot;reference external&quot; href=&quot;https://webchat.freenode.net/?channels=spritely&quot;&gt;#spritely channel on freenode&lt;/a&gt;
a friend asked, what is the big picture idea here?
Both the actor model layer and the storage layer describe themselves
as using &quot;capabilities&quot; (or more precisely &quot;object capabilities&quot; or
&quot;ocaps&quot;) but they seem to be implemented differently.
How does it all tie together?&lt;/p&gt;
&lt;p&gt;A great question!
I think the first point of confusion is that while both follow the
ocap paradigm (which is to say, reference/possession-based authority...
possessing the capability gives you access, and it does not matter what
your identity is for the most part for access control), they are
implemented very differently because they are solving different problems.
The storage system is based on encrypted, persistent data, with its ideas
drawn from &lt;a class=&quot;reference external&quot; href=&quot;https://tahoe-lafs.org/trac/tahoe-lafs&quot;&gt;Tahoe-LAFS&lt;/a&gt; and
&lt;a class=&quot;reference external&quot; href=&quot;https://freenetproject.org/&quot;&gt;Freenet&lt;/a&gt;, and the way that capabilities
work is based on possession of cryptographic keys (which are themselves
embedded/referenced in the URIs).
The actor model, on the other hand, is based on holding onto a
reference to a unique, unguessable URL (well, that&#39;s a bit of an
intentional oversimplification for the sake of this explaination but
we&#39;ll run with it) where the actor at that URL is &quot;live&quot; and communicated
with via message passing.
(Most of the ideas from this come from &lt;a class=&quot;reference external&quot; href=&quot;http://erights.org/&quot;&gt;E&lt;/a&gt; and
&lt;a class=&quot;reference external&quot; href=&quot;http://waterken.sourceforge.net/&quot;&gt;Waterken&lt;/a&gt;.)
Actors are connected to each other over secure channels to prevent
eavesdropping or leakage of the capabilities.&lt;/p&gt;
&lt;p&gt;So yeah, how do these two seemingly very different layers tie together?
As usual, I find that I most easily explain things via narrative, so
let&#39;s imagine the following game scenario: Alice is in a room with a goblin.
First Alice sees the goblin, then Alice attacks the goblin, then the
goblin and Alice realize that they are not so different and become
best friends.&lt;/p&gt;
&lt;p&gt;The goblin and Alice both manifest in this universe as live actors.
When Alice walks into the room (itself an actor), the room gives Alice
a reference to the goblin actor.
To &quot;see&quot; the goblin, Alice sends a message to it asking for its
description.
It replies with its datashards storage URI with its 3d model and associated
textures.
Alice can now query the storage system to reconstruct these models and
textures from the datashards storage systems she uses.
(The datashards storage systems themselves can&#39;t actually see the
contents if they don&#39;t have the capability itself; this is much safer
for peers to help the network share data because they can help route
things through the network without personally knowing or being
responsible for what the contents of those messages are.
It could also be possible for the goblin to provide Alice with a direct
channel to a storage system to retrieve its assets from.)
Horray, Alice got the 3d model and images!
Now she can see the goblin.&lt;/p&gt;
&lt;p&gt;Assuming that the goblin is an enemy, Alice attacks!
Attacking is common in this game universe, and there is no reason
necessarily to keep around attack messages, so sending a message to
the goblin is just a one-off transient message... there&#39;s no need
to persist it in the storage system.&lt;/p&gt;
&lt;p&gt;The attack misses!
The goblin shouts, &quot;Wait!&quot; and makes its case, that both of them are
just adventurers in this room, and shouldn&#39;t they both be friends?
Alice is touched and halts her attack.
These messages are also sent transiently; while either party could
log them, they are closer to an instant messenger or IRC conversation
rather than something intended to be persisted long-term.&lt;/p&gt;
&lt;p&gt;They exchange their mailbox addresses and begin sending each other
letters.
These, however, are intended to be persisted; when Alice receives a
message from the goblin in her mailbox (or vice versa), the message
received contains the datashards URI to the letter, which Alice can
then retrieve from the appropriate store.
She can then always refer to this message, and she can choose whether
or not to persist it locally or elsewhere.
Since the letter has its own storage URI, when Alice constructs a
reply, she can clearly mark that it was in reference to the previous
letter.
Even if Alice or the goblin&#39;s servers go down, either can continue
to refer to these letters.
Alice and the goblin have the freedom to choose what storage systems
they wish, whether targeted/direct/local or via a public peer to peer
routing system, with reasonable assumptions (given the continued
strength of the underlying cryptographic algorithms used) that the
particular entities storing or forwarding their data cannot read its
content.&lt;/p&gt;
&lt;p&gt;And so it is: live references of actors are able to send live,
transient messages, but can only be sent to other actors whose
(unguessable/unforgeable) address you have.
This allows for highly dynamic and expressive interactions while
retaining security.
Datashards URIs allow for the storage and retrieval of content which
can continue to be persisted by interested parties, even if the
originating host goes down.&lt;/p&gt;
&lt;p&gt;There are some things I glossed over in this writeup.
The particular ways that the actors&#39; addresses and references work is
one thing (unguessable http based capability URLs on their own
have &lt;a class=&quot;reference external&quot; href=&quot;https://www.w3.org/TR/capability-urls/&quot;&gt;leakage problems&lt;/a&gt;
due to the way various web technologies are implemented, and
not even every actor reference needs to be a long-lived URI;
see &lt;a class=&quot;reference external&quot; href=&quot;http://erights.org/elib/distrib/captp/index.html&quot;&gt;CapTP for more details&lt;/a&gt;),
how to establish connections between actor processes/servers
(we can reuse TLS, or even better, something like tor&#39;s onion services),
so are how interactions such as fighting can be scoped to a
room (&lt;a class=&quot;reference external&quot; href=&quot;https://www.uni-weimar.de/fileadmin/user/fak/medien/professuren/Virtual_Reality/documents/publications/capsec_vr2008_preprint.pdf&quot;&gt;this paper&lt;/a&gt;
explains how), as well as how we can map human meaningful names
onto unguessable identifiers (the answer there is
&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/cwebber/rebooting-the-web-of-trust-spring2018/blob/petnames/draft-documents/making-dids-invisible-with-petnames.md&quot;&gt;petnames&lt;/a&gt;).
But I have plans for this and increasing confidence that it will come
together... I think we&#39;re already on track.&lt;/p&gt;
&lt;p&gt;Hopefully this writeup brings some clarity on how some of the
components will work together, though!&lt;/p&gt;</content:encoded>
<dc:date>2019-06-27T18:15:00+00:00</dc:date>
<dc:creator>Christopher Lemmer Webber</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/blogs/community/gnu-spotlight-with-mike-gerwitz-17-new-gnu-releases-in-june">
<title>FSF Blogs: GNU Spotlight with Mike Gerwitz: 17 new GNU releases in June!</title>
<link>http://www.fsf.org/blogs/community/gnu-spotlight-with-mike-gerwitz-17-new-gnu-releases-in-june</link>
<content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/apl/&quot;&gt;apl-1.8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/artanis/&quot;&gt;artanis-0.3.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/dr-geo/&quot;&gt;dr-geo-19.06a&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/gawk/&quot;&gt;gawk-5.0.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/gengetopt/&quot;&gt;gengetopt-2.23&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/gnunet/&quot;&gt;gnunet-0.11.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/guile/&quot;&gt;guile-2.2.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/gnuzilla/&quot;&gt;icecat-60.7.0-gnu1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/libmicrohttpd/&quot;&gt;libmicrohttpd-0.9.64&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/libredwg/&quot;&gt;libredwg-0.8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/mailutils/&quot;&gt;mailutils-3.7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/mit-scheme/&quot;&gt;mit-scheme-10.1.9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/nano/&quot;&gt;nano-4.3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/nettle/&quot;&gt;nettle-3.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/parallel/&quot;&gt;parallel-20190622&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/unifont/&quot;&gt;unifont-12.1.02&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/units/&quot;&gt;units-2.19&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For announcements of most new GNU releases, subscribe to the info-gnu
mailing list: &lt;a href=&quot;https://lists.gnu.org/mailman/listinfo/info-gnu&quot;&gt;https://lists.gnu.org/mailman/listinfo/info-gnu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To download: nearly all GNU software is available from
&lt;a href=&quot;https://ftp.gnu.org/gnu/&quot;&gt;https://ftp.gnu.org/gnu/&lt;/a&gt;, or preferably one of its mirrors from
&lt;a href=&quot;https://www.gnu.org/prep/ftp.html&quot;&gt;https://www.gnu.org/prep/ftp.html&lt;/a&gt;. You can use the URL
&lt;a href=&quot;https://ftpmirror.gnu.org/&quot;&gt;https://ftpmirror.gnu.org/&lt;/a&gt; to be automatically redirected to a
(hopefully) nearby and up-to-date mirror.&lt;/p&gt;
&lt;p&gt;A number of GNU packages, as well as the GNU operating system as a
whole, are looking for maintainers and other assistance: please see
&lt;a href=&quot;https://www.gnu.org/server/takeaction.html#unmaint&quot;&gt;https://www.gnu.org/server/takeaction.html#unmaint&lt;/a&gt; if you&#39;d like to
help. The general page on how to help GNU is at
&lt;a href=&quot;https://www.gnu.org/help/help.html&quot;&gt;https://www.gnu.org/help/help.html&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you have a working or partly working program that you&#39;d like
to offer to the GNU project as a GNU package, see
&lt;a href=&quot;https://www.gnu.org/help/evaluation.html&quot;&gt;https://www.gnu.org/help/evaluation.html&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As always, please feel free to write to us at &lt;a href=&quot;mailto:maintainers@gnu.org&quot;&gt;maintainers@gnu.org&lt;/a&gt;
with any GNUish questions or suggestions for future installments.&lt;/p&gt;</content:encoded>
<dc:date>2019-06-27T16:08:17+00:00</dc:date>
<dc:creator>FSF Blogs</dc:creator>
</item>
<item rdf:about="http://wingolog.org/2019/06/26/fibs-lies-and-benchmarks">
<title>Andy Wingo: fibs, lies, and benchmarks</title>
<link>http://wingolog.org/archives/2019/06/26/fibs-lies-and-benchmarks</link>
<content:encoded>&lt;div&gt;&lt;p&gt;Friends, consider the recursive Fibonacci function, expressed most lovelily in Haskell:&lt;/p&gt;&lt;pre&gt;fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
&lt;/pre&gt;&lt;p&gt;Computing elements of the Fibonacci sequence (&quot;Fibonacci numbers&quot;) is a common microbenchmark. Microbenchmarks are like a &lt;a href=&quot;https://en.wikipedia.org/wiki/Suzuki_method&quot;&gt;Suzuki exercises for learning violin&lt;/a&gt;: not written to be good tunes (good programs), but rather to help you improve a skill.&lt;/p&gt;&lt;p&gt;The &lt;tt&gt;fib&lt;/tt&gt; microbenchmark teaches language implementors to improve recursive function call performance.&lt;/p&gt;&lt;p&gt;I&#39;m writing this article because after adding native code generation to Guile, I wanted to check how Guile was doing relative to other language implementations. The results are mixed. We can start with the most favorable of the comparisons: Guile present versus Guile of the past.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src=&quot;http://wingolog.org/pub/guile-versions.png&quot; /&gt;&lt;br /&gt;&lt;/center&gt;&lt;p&gt;I collected these numbers on my i7-7500U CPU @ 2.70GHz 2-core laptop, with no particular performance tuning, running each benchmark 10 times, waiting 2 seconds between measurements. The bar value indicates the median elapsed time, and above each bar is an overlayed histogram of all results for that scenario. Note that the y axis is on a log scale. The 2.9.3* version corresponds to unreleased Guile from git.&lt;/p&gt;&lt;p&gt;Good news: Guile has been getting significantly faster over time! Over decades, true, but I&#39;m pleased.&lt;/p&gt;&lt;p&gt;&lt;b&gt;where are we? static edition&lt;/b&gt;&lt;/p&gt;&lt;p&gt;How good are Guile&#39;s numbers on an absolute level? It&#39;s hard to say because there&#39;s no absolute performance oracle out there. However there are relative performance oracles, so we can try out perhaps some other language implementations.&lt;/p&gt;&lt;p&gt;First up would be the industrial C compilers, GCC and LLVM. We can throw in a few more &quot;static&quot; language implementations as well: compilers that completely translate to machine code ahead-of-time, with no type feedback, and a minimal run-time.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src=&quot;http://wingolog.org/pub/static-languages.png&quot; /&gt;&lt;br /&gt;&lt;/center&gt;&lt;p&gt;Here we see that GCC is doing best on this benchmark, completing in an impressive 0.304 seconds. It&#39;s interesting that the result differs so much from clang. I had a look at the disassembly for GCC and I see:&lt;/p&gt;&lt;pre&gt;fib:
push %r12
mov %rdi,%rax
push %rbp
mov %rdi,%rbp
push %rbx
cmp $0x1,%rdi
jle finish
mov %rdi,%rbx
xor %r12d,%r12d
again:
lea -0x1(%rbx),%rdi
sub $0x2,%rbx
callq fib
add %rax,%r12
cmp $0x1,%rbx
jg again
and $0x1,%ebp
lea 0x0(%rbp,%r12,1),%rax
finish:
pop %rbx
pop %rbp
pop %r12
retq
&lt;/pre&gt;&lt;p&gt;It&#39;s not quite straightforward; what&#39;s the loop there for? It turns out that &lt;a href=&quot;https://stackoverflow.com/a/10058823&quot;&gt;GCC inlines one of the recursive calls to &lt;tt&gt;fib&lt;/tt&gt;&lt;/a&gt;. The microbenchmark is no longer measuring call performance, because GCC managed to reduce the number of calls. If I had to guess, I would say this optimization doesn&#39;t have a wide applicability and is just to game benchmarks. In that case, well played, GCC, well played.&lt;/p&gt;&lt;p&gt;LLVM&#39;s compiler (clang) looks more like what we&#39;d expect:&lt;/p&gt;&lt;pre&gt;fib:
push %r14
push %rbx
push %rax
mov %rdi,%rbx
cmp $0x2,%rdi
jge recurse
mov %rbx,%rax
add $0x8,%rsp
pop %rbx
pop %r14
retq
recurse:
lea -0x1(%rbx),%rdi
&lt;b&gt;callq fib&lt;/b&gt;
mov %rax,%r14
add $0xfffffffffffffffe,%rbx
mov %rbx,%rdi
&lt;b&gt;callq fib&lt;/b&gt;
add %r14,%rax
add $0x8,%rsp
pop %rbx
pop %r14
retq
&lt;/pre&gt;&lt;p&gt;I bolded the two recursive calls.&lt;/p&gt;&lt;p&gt;Incidentally, the &lt;tt&gt;fib&lt;/tt&gt; as implemented by GCC and LLVM isn&#39;t quite the same program as Guile&#39;s version. If the result gets too big, GCC and LLVM will overflow, whereas in Guile we overflow into a &lt;a href=&quot;https://wingolog.org/archives/2019/05/23/bigint-shipping-in-firefox&quot;&gt;bignum&lt;/a&gt;. Also in C, it&#39;s possible to &quot;smash the stack&quot; if you recurse too much; compilers and run-times attempt to mitigate this danger but it&#39;s not completely gone. In Guile &lt;a href=&quot;https://wingolog.org/archives/2014/03/17/stack-overflow&quot;&gt;you can recurse however much you want&lt;/a&gt;. Finally in Guile you can interrupt the process if you like; the compiled code is instrumented with safe-points that can be used to run profiling hooks, debugging, and so on. Needless to say, this is not part of C&#39;s mission.&lt;/p&gt;&lt;p&gt;Some of these additional features can be implemented with no significant performance cost (e.g., via guard pages). But it&#39;s fair to expect that they have some amount of overhead. More on that later.&lt;/p&gt;&lt;p&gt;The other compilers are OCaml&#39;s &lt;tt&gt;ocamlopt&lt;/tt&gt;, coming in with a very respectable result; Go, also doing well; and V8 WebAssembly via Node. As you know, you can compile C to WebAssembly, and then V8 will compile that to machine code. In practice it&#39;s just as static as any other compiler, but the generated assembly is a bit more involved:&lt;/p&gt;&lt;pre&gt;
fib_tramp:
jmp fib
fib:
push %rbp
mov %rsp,%rbp
pushq $0xa
push %rsi
sub $0x10,%rsp
mov %rsi,%rbx
mov 0x2f(%rbx),%rdx
mov %rax,-0x18(%rbp)
cmp %rsp,(%rdx)
jae stack_check
post_stack_check:
cmp $0x2,%eax
jl return_n
lea -0x2(%rax),%edx
mov %rbx,%rsi
mov %rax,%r10
mov %rdx,%rax
mov %r10,%rdx
callq fib_tramp
mov -0x18(%rbp),%rbx
sub $0x1,%ebx
mov %rax,-0x20(%rbp)
mov -0x10(%rbp),%rsi
mov %rax,%r10
mov %rbx,%rax
mov %r10,%rbx
callq fib_tramp
return:
mov -0x20(%rbp),%rbx
add %ebx,%eax
mov %rbp,%rsp
pop %rbp
retq
return_n:
jmp return
stack_check:
callq WasmStackGuard
mov -0x10(%rbp),%rbx
mov -0x18(%rbp),%rax
jmp post_stack_check
&lt;/pre&gt;&lt;p&gt;Apparently &lt;tt&gt;fib&lt;/tt&gt; compiles to a function of two arguments, the first passed in &lt;tt&gt;rsi&lt;/tt&gt;, and the second in &lt;tt&gt;rax&lt;/tt&gt;. (V8 uses a custom calling convention for its compiled WebAssembly.) The first synthesized argument is a handle onto run-time data structures for the current thread or isolate, and in the function prelude there&#39;s a check to see that the function has enough stack. V8 uses these stack checks also to handle interrupts, for when a web page is stuck in JavaScript.&lt;/p&gt;&lt;p&gt;Otherwise, it&#39;s a more or less normal function, with a bit more register/stack traffic than would be strictly needed, but pretty good.&lt;/p&gt;&lt;p&gt;&lt;b&gt;do optimizations matter?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;You&#39;ve heard of Moore&#39;s Law -- though it doesn&#39;t apply any more, it roughly translated into hardware doubling in speed every 18 months. (Yes, I know it wasn&#39;t precisely that.) There is a corresponding rule of thumb for compiler land, &lt;a href=&quot;http://proebsting.cs.arizona.edu/law.html&quot;&gt;Proebsting&#39;s Law&lt;/a&gt;: compiler optimizations make software twice as fast every 18 &lt;i&gt;years&lt;/i&gt;. Zow!&lt;/p&gt;&lt;p&gt;The previous results with GCC and LLVM were with optimizations enabled (-O3). One way to measure Proebsting&#39;s Law would be to compare the results with -O0. Obviously in this case the program is small and we aren&#39;t expecting much work out of the optimizer, but it&#39;s interesting to see anyway:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src=&quot;http://wingolog.org/pub/optimization-levels.png&quot; /&gt;&lt;br /&gt;&lt;/center&gt;&lt;p&gt;Answer: optimizations don&#39;t matter much for this benchark. This investigation does give a good baseline for compilers from high-level languages, like Guile: in the absence of clever trickery like the recursive inlining thing GCC does and in the absence of industrial-strength instruction selection, what&#39;s a good baseline target for a compiler? Here we see for this benchmark that it&#39;s somewhere between 420 and 620 milliseconds or so. Go gets there, and OCaml does even better.&lt;/p&gt;&lt;p&gt;&lt;b&gt;how is time being spent, anyway?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Might we expect V8/WebAssembly to get there soon enough, or is the stack check that costly? How much time does one stack check take anyway? For that we&#39;d have to determine the number of recursive calls for a given invocation.&lt;/p&gt;&lt;p&gt;Friends, it&#39;s not entirely clear to me why this is, but I instrumented a copy of &lt;tt&gt;fib&lt;/tt&gt;, and I found that the number of calls in &lt;tt&gt;fib(&lt;i&gt;n&lt;/i&gt;)&lt;/tt&gt; was a more or less constant factor of the result of calling &lt;tt&gt;fib&lt;/tt&gt;. That ratio converges to twice the golden ratio, which means that since &lt;tt&gt;fib(n+1) ~= φ * fib(n)&lt;/tt&gt;, then the number of calls in &lt;tt&gt;fib(n)&lt;/tt&gt; is approximately &lt;tt&gt;2 * fib(n+1)&lt;/tt&gt;. I scratched my head for a bit as to why this is and I gave up; the Lord works in mysterious ways.&lt;/p&gt;&lt;p&gt;Anyway for &lt;tt&gt;fib(40)&lt;/tt&gt;, that means that there are around 3.31e8 calls, absent GCC shenanigans. So that would indicate that each call for clang takes around 1.27 ns, which at turbo-boost speeds on this machine is 4.44 cycles. At maximum throughput (4 IPC), that would indicate 17.8 instructions per call, and indeed on the &lt;tt&gt;n &amp;gt; 2&lt;/tt&gt; path I count 17 instructions.&lt;/p&gt;&lt;p&gt;For WebAssembly I calculate 2.25 nanoseconds per call, or 7.9 cycles, or 31.5 (fused) instructions at max IPC. And indeed counting the extra jumps in the trampoline, I get 33 cycles on the recursive path. I count 4 instructions for the stack check itself, one to save the current isolate, and two to shuffle the current isolate into place for the recursive calls. But, compared to clang, V8 puts 6 words on the stack per call, as opposed to only 4 for LLVM. I think with better interprocedura
(if (&amp;lt; n 2)
n
(+ (fib (- n 1)) (fib (- n 2)))))
&lt;/pre&gt;&lt;p&gt;They were running this, instead:&lt;/p&gt;&lt;pre&gt;(define (fib n)
(define (fib* n)
(if (&amp;lt; n 2)
n
(+ (fib* (- n 1)) (fib* (- n 2)))))
(fib* n))
&lt;/pre&gt;&lt;p&gt;The thing is, historically, Scheme programs have treated top-level definitions as being mutable. This is because you don&#39;t know the extent of the top-level scope -- there could always be someone else who comes and adds a new definition of &lt;tt&gt;fib&lt;/tt&gt;, effectively mutating the existing definition in place.&lt;/p&gt;&lt;p&gt;This practice has its uses. It&#39;s useful to be able to go in to a long-running system and change a definition to fix a bug or add a feature. It&#39;s also a useful way of developing programs, to incrementally build the program bit by bit.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src=&quot;http://wingolog.org/pub/top-level-vs-lexical.png&quot; /&gt;&lt;br /&gt;&lt;/center&gt;&lt;p&gt;But, I would say that as someone who as written and maintained a lot of Scheme code, it&#39;s not a normal occurence to mutate a top-level binding on purpose, and it has a significant performance impact. If the compiler knows the target to a call, that unlocks a number of important optimizations: type check elision on the callee, more optimal closure representation, smaller stack frames, possible contification (turning calls into jumps), argument and return value count elision, representation specialization, and so on.&lt;/p&gt;&lt;p&gt;This overhead is especially egregious for calls inside modules. Scheme-the-language only gained modules relatively recently -- relative to the history of scheme -- and one of the aspects of modules is precisely to allow reasoning about top-level module-level bindings. This is why running Chez Scheme with the &lt;tt&gt;--program&lt;/tt&gt; option is generally faster than &lt;tt&gt;--script&lt;/tt&gt; (which I used for all of these tests): it opts in to the &quot;newer&quot; specification of what a top-level binding is.&lt;/p&gt;&lt;p&gt;In Guile we would probably like to move towards a more static way of treating top-level bindings, at least those within a single compilation unit. But we haven&#39;t done so yet. It&#39;s probably the most important single optimization we can make over the near term, though.&lt;/p&gt;&lt;p&gt;As an aside, it seems that LuaJIT also shows a similar performance differential for &lt;tt&gt;local function fib(n)&lt;/tt&gt; versus just plain &lt;tt&gt;function fib(n)&lt;/tt&gt;.&lt;/p&gt;&lt;p&gt;It&#39;s true though that even absent lexical optimizations, top-level calls can be made more efficient in Guile. I am not sure if we can reach Chez with the current setup of having a &lt;a href=&quot;https://www.gnu.org/software/guile/docs/master/guile.html/Just_002dIn_002dTime-Native-Code.html#Just_002dIn_002dTime-Native-Code&quot;&gt;template JIT&lt;/a&gt;, because we need two return addresses: one virtual (for bytecode) and one &quot;native&quot; (for JIT code). Register allocation is also something to improve but it turns out to not be so important for &lt;tt&gt;fib&lt;/tt&gt;, as there are few live values and they need to spill for the recursive call. But, we can avoid some of the indirection on the call, probably using an inline cache associated with the callee; Chez has had this optimization since 1984!&lt;/p&gt;&lt;p&gt;&lt;b&gt;what guile learned from &lt;tt&gt;fib&lt;/tt&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This exercise has been useful to speed up Guile&#39;s procedure calls, as you can see for the difference between the latest Guile 2.9.2 release and what hasn&#39;t been released yet (2.9.3).&lt;/p&gt;&lt;p&gt;To decide what improvements to make, I extracted the assembly that Guile generated for &lt;tt&gt;fib&lt;/tt&gt; to a standalone file, and tweaked it in a number of ways to determine what the potential impact of different scenarios was. Some of the detritus from this investigation is &lt;a href=&quot;https://gitlab.com/wingo/fib-asm-tinkering&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;There were three big performance improvements. One was to avoid eagerly initializing the slots in a function&#39;s stack frame; this took a surprising amount of run-time. Fortunately the rest of the toolchain like the
<dc:date>2019-06-26T10:34:11+00:00</dc:date>
<dc:creator>Andy Wingo</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/blogs/gnu-press/emacs-t-shirts-available-now-at-the-gnu-press-shop">
<title>FSF Blogs: GNU Emacs T-shirts available now at the GNU Press Shop</title>
<link>http://www.fsf.org/blogs/gnu-press/emacs-t-shirts-available-now-at-the-gnu-press-shop</link>
<content:encoded>&lt;p&gt;&lt;img alt=&quot;zoe modeling emacs tee&quot; src=&quot;https://shop.fsf.org/sites/default/files/styles/product_zoom/public/Emacs%20shirt%20three%20quarter.jpg&quot; style=&quot;margin-top: 4px;&quot; width=&quot;300&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Have you been waiting with bated breath for the opportunity to show your love for GNU Emacs, the text editor that also does everything else, with a nifty T-shirt? Wait no longer. The GNU Press Shop now has GNU Emacs logo T-shirts in unisex sizes S through XXXL. Order one at &lt;a href=&quot;https://shop.fsf.org/tshirts-hoodies/gnu-emacs-logo-t-shirt&quot;&gt;https://shop.fsf.org/tshirts-hoodies/gnu-emacs-logo-t-shirt&lt;/a&gt;, and we&#39;ll ship it to you sooner than you can say &quot;extensible, customizable, self-documenting, real-time display editor.&quot;&lt;/p&gt;
&lt;p&gt;All GNU Press Shop purchases support the Free Software Foundation&#39;s efforts to free all software, and &lt;a href=&quot;https://my.fsf.org/join&quot;&gt;FSF associate members&lt;/a&gt; get a 20% discount off of all purchases.&lt;/p&gt;</content:encoded>
<dc:date>2019-06-25T19:20:00+00:00</dc:date>
<dc:creator>FSF Blogs</dc:creator>
</item>
<item rdf:about="tag:dustycloud.org,2019-06-25:blog/lets-just-be-weird-together/">
<title>Christopher Allan Webber: Let&#39;s Just Be Weird Together</title>
<link>http://dustycloud.org/blog/lets-just-be-weird-together/</link>
<content:encoded>&lt;div class=&quot;figure&quot;&gt;
&lt;img alt=&quot;ascii art of weird tea mugs with steam&quot; src=&quot;http://dustycloud.org/etc/images/blog/ljbwt.gif&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;Approximately a month ago was &lt;a class=&quot;reference external&quot; href=&quot;https://mlemmer.org/&quot;&gt;Morgan&lt;/a&gt; and I&#39;s
10 year wedding anniversary.
To commemorate that, and as a surprise gift, I made the above ascii
art and animation.&lt;/p&gt;
&lt;p&gt;Actually, it&#39;s not just an animation, it&#39;s a program, and one
&lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/dustyweb/dos-hurd/blob/master/dos-hurd/examples/ljbwt.rkt&quot;&gt;you can run&lt;/a&gt;.
As a side note, I originally thought I&#39;d write up how I made it,
but I kept procrastinating on that and it lead me to putting off
writing this post for about a month.
Oh well, all I&#39;ll say for now is that it lead to a
&lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/spritely/goblinoid&quot;&gt;major rewrite&lt;/a&gt; of one of
the &lt;a class=&quot;reference external&quot; href=&quot;https://gitlab.com/spritely/goblins&quot;&gt;main components of Spritely&lt;/a&gt;.
But that&#39;s something to speak of for another time, I suppose.&lt;/p&gt;
&lt;p&gt;Back to the imagery!
Morgan was surprised to see the animation, and yet the image itself
wasn&#39;t a surprise.
That&#39;s because the design is actually built off of one we collaborated
on together:&lt;/p&gt;
&lt;div class=&quot;figure&quot;&gt;
&lt;img alt=&quot;embroidery of weird tea mugs with steam&quot; src=&quot;http://dustycloud.org/etc/images/blog/ljbwt-embroidery-scaled.jpg&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;I did the sketch for it and Morgan embroidered it.
The plan is to put this above the tea station we set up in the reading
area of our house.&lt;/p&gt;
&lt;p&gt;The imagery and phrasing captures the philosophy of Morgan and I&#39;s
relationship.
We&#39;re both weird and deeply imperfect people, maybe even in some ways
broken.
But that&#39;s okay.
We don&#39;t expect each other to change or become something else... we
just try to become the best weird pairing we can together.
I think that strategy has worked out for us.&lt;/p&gt;
&lt;p&gt;Thanks for all the happy times so far, Morgan.
I look forward to many weird years ahead.&lt;/p&gt;</content:encoded>
<dc:date>2019-06-25T18:10:00+00:00</dc:date>
<dc:creator>Christopher Lemmer Webber</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/blogs/rms/drop-the-journalism-charges-against-julian-assange">
<title>FSF Blogs: Drop the journalism charges against Julian Assange</title>
<link>http://www.fsf.org/blogs/rms/drop-the-journalism-charges-against-julian-assange</link>
<content:encoded>&lt;p&gt;The US government has persecuted Julian Assange for a decade for
Wikileaks&#39; journalism, and now &lt;a href=&quot;https://theintercept.com/2019/05/24/the-indictment-of-julian-assange-under-the-espionage-act-is-a-threat-to-the-press-and-the-american-people/&quot;&gt;seeks to use his case to label the
publishing of leaked secret information as spying.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Free Software Foundation stands for freedom of publication and due
process, because they are necessary to exercise and uphold the
software freedom we campaign for. The attack on journalism threatens
freedom of publication; the twisting of laws to achieve an unstated
aim threatens due process of law. The FSF therefore calls on the
United States to drop all present and future charges against Julian
Assange relating to Wikileaks activities.&lt;/p&gt;
&lt;p&gt;Accusations against Assange that are unrelated to journalism should be
pursued or not pursued based on their merits, giving him neither
better nor worse treatment on account of his journalism.&lt;/p&gt;</content:encoded>
<dc:date>2019-06-25T17:50:06+00:00</dc:date>
<dc:creator>FSF Blogs</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9457">
<title>libredwg @ Savannah: libredwg-0.8 released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9457</link>
<content:encoded>&lt;p&gt;This is a major release, adding the new dynamic API, read and write
&lt;br /&gt;
all header and object fields by name. Many of the old dwg_api.h field
&lt;br /&gt;
accessors are deprecated.
&lt;br /&gt;
More here: &lt;a href=&quot;https://www.gnu.org/software/libredwg/&quot;&gt;https://www.gnu.org/software/libredwg/&lt;/a&gt; and &lt;a href=&quot;http://git.savannah.gnu.org/cgit/libredwg.git/tree/NEWS&quot;&gt;http://git.savannah.gnu.org/cgit/libredwg.git/tree/NEWS&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here are the compressed sources:
&lt;br /&gt;
  &lt;a href=&quot;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.gz&quot;&gt;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.gz&lt;/a&gt;   (9.8MB)
&lt;br /&gt;
  &lt;a href=&quot;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.xz&quot;&gt;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.xz&lt;/a&gt;   (3.7MB)
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here are the GPG detached signatures[*]:
&lt;br /&gt;
  &lt;a href=&quot;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.gz.sig&quot;&gt;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.gz.sig&lt;/a&gt;
&lt;br /&gt;
  &lt;a href=&quot;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.xz.sig&quot;&gt;http://ftp.gnu.org/gnu/libredwg/libredwg-0.8.tar.xz.sig&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Use a mirror for higher download bandwidth:
&lt;br /&gt;
  &lt;a href=&quot;https://www.gnu.org/order/ftp.html&quot;&gt;https://www.gnu.org/order/ftp.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here are more binaries:
&lt;br /&gt;
  &lt;a href=&quot;https://github.com/LibreDWG/libredwg/releases/tag/0.8&quot;&gt;https://github.com/LibreDWG/libredwg/releases/tag/0.8&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here are the SHA256 checksums:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;087f0806220a0a33a9aab2c2763266a69e12427a5bd7179cff206289e60fe2fd  libredwg-0.8.tar.gz
&lt;br /&gt;
0487c84e962a4dbcfcf3cbe961294b74c1bebd89a128b4929a1353bc7f58af26  libredwg-0.8.tar.xz
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;[*] Use a .sig file to verify that the corresponding file (without the
&lt;br /&gt;
.sig suffix) is intact.  First, be sure to download both the .sig file
&lt;br /&gt;
and the corresponding tarball.  Then, run a command like this:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;  gpg --verify libredwg-0.8.tar.gz.sig
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If that command fails because you don&#39;t have the required public key,
&lt;br /&gt;
then run this command to import it:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;  gpg --keyserver keys.gnupg.net --recv-keys B4F63339E65D6414
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;and rerun the &#39;gpg --verify&#39; command.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-25T09:55:44+00:00</dc:date>
<dc:creator>Reini Urban</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9456">
<title>apl @ Savannah: GNU APL 1.8 Released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9456</link>
<content:encoded>&lt;p&gt;I am happy to announce that GNU APL 1.8 has been released.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU APL is a free implementation of the ISO standard 13751 aka.
&lt;br /&gt;
&quot;Programming Language APL, Extended&quot;,
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This release contains:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bug fixes,
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;⎕DLX (Donald Knuth&#39;s Dancing Links Algorithm),
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;⎕FFT (fast fourier transforms; real, complex, and windows),
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;⎕GTK (create GUI windows from APL),
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;⎕RE (regular expressions), and
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;user-defined APL commands.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, you can now call GNU APL from Python.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-23T13:03:32+00:00</dc:date>
<dc:creator>Jürgen Sauermann</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9453">
<title>denemo @ Savannah: Release 2.3 is imminent - please test.</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9453</link>
<content:encoded>&lt;p&gt;New Features
&lt;br /&gt;
    Seek Locations in Scores
&lt;br /&gt;
        Specify type of object sought
&lt;br /&gt;
        Or valid note range
&lt;br /&gt;
        Or any custom condition
&lt;br /&gt;
        Creates a clickable list of locations
&lt;br /&gt;
        Each location is removed from list once visited
&lt;br /&gt;
    Syntax highlighting in LilyPond view
&lt;br /&gt;
    Playback Start/End markers draggable
&lt;br /&gt;
    Source window navigation by page number
&lt;br /&gt;
        Page number always visible
&lt;br /&gt;
    Rapid marking of passages
&lt;br /&gt;
    Two-chord Tremolos
&lt;br /&gt;
    Allowing breaks at half-measure for whole movement
&lt;br /&gt;
        Also breaks at every beat
&lt;br /&gt;
    Passages
&lt;br /&gt;
        Mark Passages of music
&lt;br /&gt;
        Perform tasks on the marked passages
&lt;br /&gt;
        Swapping musical material with staff below implemented
&lt;br /&gt;
    Search for lost scores
&lt;br /&gt;
        Interval-based
&lt;br /&gt;
        Searches whole directory hierarchy
&lt;br /&gt;
        Works for transposed scores
&lt;br /&gt;
    Compare Scores
&lt;br /&gt;
    Index Collection of Scores
&lt;br /&gt;
        All scores below a start directory indexed
&lt;br /&gt;
        Index includes typeset incipit for music
&lt;br /&gt;
        Title, Composer, Instrumentation, Score Comment fields
&lt;br /&gt;
        Sort by composer surname
&lt;br /&gt;
        Filter by any Scheme condition
&lt;br /&gt;
        Open files by clicking on them in Index
&lt;br /&gt;
    Intelligent File Opening
&lt;br /&gt;
        Re-interprets file paths for moved file systems
&lt;br /&gt;
    Improved Score etc editor appearance
&lt;br /&gt;
    Print History
&lt;br /&gt;
        History records what part of the score was printed
&lt;br /&gt;
        Date and printer included
&lt;br /&gt;
    Improvements to Scheme Editor
&lt;br /&gt;
        Title bar shows open file
&lt;br /&gt;
        Save dialog gives help
&lt;br /&gt;
    Colors now differentiate palettes, titles etc. in main display
&lt;br /&gt;
    Swapping Display and Source positions
&lt;br /&gt;
        for switching between entering music and editing
&lt;br /&gt;
        a single keypress or MIDI command
&lt;br /&gt;
    Activate object from keyboard
&lt;br /&gt;
        Fn2 key equivalent to mouse-right click
&lt;br /&gt;
        Shift and Control right-click via Shift-Fn2 and Control-Fn2
&lt;br /&gt;
    Help via Email
&lt;br /&gt;
    Auto-translation to Spanish
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Bug Fixes
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    Adding buttons to palettes no longer brings hidden buttons back
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    MIDI playback of empty measures containing non-notes
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    Instrument name with Ambitus clash in staff properties menu fixed
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    Visibility of emmentaler glyphs fixed
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    Update of layout on staff to voice change
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    Open Recent anomalies fixed
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;    Failures to translate menu titles and palettes fixed&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-22T09:29:29+00:00</dc:date>
<dc:creator>Richard Shann</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9451">
<title>parallel @ Savannah: GNU Parallel 20190622 (&#39;HongKong&#39;) released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9451</link>
<content:encoded>&lt;p&gt;GNU Parallel 20190622 (&#39;HongKong&#39;) has been released. It is available for download at: &lt;a href=&quot;http://ftpmirror.gnu.org/parallel/&quot;&gt;http://ftpmirror.gnu.org/parallel/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel is 10 years old in a year on 2020-04-22. You are here by invited to a reception on Friday 2020-04-17.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.gnu.org/software/parallel/10-years-anniversary.html&quot;&gt;https://www.gnu.org/software/parallel/10-years-anniversary.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Quote of the month:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;  I want to make a shout-out for @GnuParallel, it&#39;s a work of beauty and power
&lt;br /&gt;
    -- Cristian Consonni @CristianCantoro
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;New in this release:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;--shard can now take a column name and optionally a perl expression. Similar to --group-by and replacement strings.
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Using AWK and R to parse 25tb &lt;a href=&quot;https://livefreeordichotomize.com/2019/06/04/using_awk_and_r_to_parse_25tb/&quot;&gt;https://livefreeordichotomize.com/2019/06/04/using_awk_and_r_to_parse_25tb/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Parallel and Visual testing with Behat &lt;a href=&quot;http://parallelandvisualtestingwithbehat.blogspot.com/p/blog-page.html&quot;&gt;http://parallelandvisualtestingwithbehat.blogspot.com/p/blog-page.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;维基百科,自由的百科全书&lt;a href=&quot;https://zh.wikipedia.org/wiki/GNU_parallel&quot;&gt;https://zh.wikipedia.org/wiki/GNU_parallel&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Bug fixes and man page updates.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get the book: GNU Parallel 2018 &lt;a href=&quot;http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html&quot;&gt;http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel - For people who live life in the parallel lane.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;About GNU Parallel&lt;/h2&gt;
&lt;p&gt;GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You can find more about GNU Parallel at: &lt;a href=&quot;http://www.gnu.org/s/parallel/&quot;&gt;http://www.gnu.org/s/parallel/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You can install GNU Parallel in just 10 seconds with:
&lt;br /&gt;
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - &lt;a href=&quot;http://pi.dk/3&quot;&gt;http://pi.dk/3&lt;/a&gt;) | bash
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Watch the intro video on &lt;a href=&quot;http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1&quot;&gt;http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When using programs that use GNU Parallel to process data for publication please cite:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;O. Tange (2018): GNU Parallel 2018, March 2018, &lt;a href=&quot;https://doi.org/10.5281/zenodo.1146014&quot;&gt;https://doi.org/10.5281/zenodo.1146014&lt;/a&gt;.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you like GNU Parallel:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give a demo at your local user group/team/colleagues
&lt;/li&gt;
&lt;li&gt;Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
&lt;/li&gt;
&lt;li&gt;Get the merchandise &lt;a href=&quot;https://gnuparallel.threadless.com/designs/gnu-parallel&quot;&gt;https://gnuparallel.threadless.com/designs/gnu-parallel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Request or write a review for your favourite blog or magazine
&lt;/li&gt;
&lt;li&gt;Request or build a package for your favourite distribution (if it is not already there)
&lt;/li&gt;
&lt;li&gt;Invite me for your next conference
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use programs that use GNU Parallel for research:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Please cite GNU Parallel in you publications (use --citation)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If GNU Parallel saves you money:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(Have your company) donate to FSF &lt;a href=&quot;https://my.fsf.org/donate/&quot;&gt;https://my.fsf.org/donate/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;About GNU SQL&lt;/h2&gt;
&lt;p&gt;GNU sql aims to give a simple, unified interface for accessing databases through all the different databases&#39; command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The database is addressed using a DBURL. If commands are left out you will get that database&#39;s interactive shell.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When using GNU SQL for a publication please cite:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;About GNU Niceload&lt;/h2&gt;
&lt;p&gt;GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-21T13:36:51+00:00</dc:date>
<dc:creator>Ole Tange</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9450">
<title>mailutils @ Savannah: Version 3.7</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9450</link>
<content:encoded>&lt;p&gt;Version 3.7 of GNU mailutils is &lt;a href=&quot;https://ftp.gnu.org/gnu/mailutils/mailutils-3.7.tar.gz&quot;&gt;available for download&lt;/a&gt;.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This version introduces a new format for mailboxes: &lt;strong&gt;dotmail&lt;/strong&gt;. Dotmail is a replacement for traditional mbox format, proposed by
&lt;br /&gt;
Kurt Hackenberg. A dotmail mailbox is a single disk file, where messages are stored sequentially. Each message ends with a single
&lt;br /&gt;
dot (similar to the format used in the SMTP DATA command). A dot appearing at the start of the line is doubled, to prevent it from being interpreted as end of message marker.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;For a complete list of changes, please see the &lt;a href=&quot;http://git.savannah.gnu.org/cgit/mailutils.git/plain/NEWS?id=8a92bd208e5cf9f2a9f6b347051bf824b8c0995c&quot;&gt;NEWS file&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-21T13:15:09+00:00</dc:date>
<dc:creator>Sergey Poznyakoff</dc:creator>
</item>
<item rdf:about="https://www.gnu.org/software/guile/news/gnu-guile-225-released.html">
<title>GNU Guile: GNU Guile 2.2.5 released</title>
<link>https://www.gnu.org/software/guile/news/gnu-guile-225-released.html</link>
<content:encoded>&lt;p&gt;We are pleased to announce GNU Guile 2.2.5, the fifth bug-fix
release in the new 2.2 stable release series. This release represents
100 commits by 11 people since version 2.2.4. It fixes bugs that
had accumulated over the last few months, notably in the SRFI-19 date
and time library and in the &lt;code&gt;(web uri)&lt;/code&gt; module. This release also
greatly improves performance of bidirectional pipes, and introduces the
new &lt;code&gt;get-bytevector-some!&lt;/code&gt; binary input primitive that made it possible.&lt;/p&gt;&lt;p&gt;Guile 2.2.5 can be downloaded from &lt;a href=&quot;https://www.gnu.org/software/guile/download&quot;&gt;the usual
places&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;See the &lt;a href=&quot;https://lists.gnu.org/archive/html/guile-devel/2019-06/msg00045.html&quot;&gt;release
announcement&lt;/a&gt;
for details.&lt;/p&gt;&lt;p&gt;Besides, we remind you that Guile 3.0 is in the works, and that you can
try out &lt;a href=&quot;https://www.gnu.org/software/guile/news/gnu-guile-292-beta-released.html&quot;&gt;version 2.9.2, which is the latest beta release of what will
become
3.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Enjoy!&lt;/p&gt;</content:encoded>
<dc:date>2019-06-20T11:20:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/events/event-20190904-madrid-gnuhackersmeeting">
<title>FSF Events: Event - GNU Hackers Meeting (Madrid, Spain)</title>
<link>http://www.fsf.org/events/event-20190904-madrid-gnuhackersmeeting</link>
<content:encoded>&lt;p&gt;Twelve years after it&#39;s first edition in Orense, the GNU Hackers
Meeting (2019-09-0406) will help in Spain again. This is an
opportunity to meet, hack, and learn with other free software
enthusiasts.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.gnu.org/ghm/2019/&quot;&gt;event page&lt;/a&gt; for registration, call-for-talks, accommodations,
transportation, and other information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;em&gt;&lt;a href=&quot;http://www.etsisi.upm.es/&quot;&gt;ETSISI&lt;/a&gt; (Escuela Técnica Superior de Ingeniería de Sistemas Informáticos), Universidad Politécnica de Madrid, Calle Alan Turing s/n (Carretera de Valencia Km 7), 28031 Madrid, España&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Please fill out our contact form, so that &lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=69&amp;amp;reset=1&quot;&gt;we
can contact you about future events in and around Madrid.&lt;/a&gt;&lt;/p&gt;</content:encoded>
<dc:date>2019-06-19T16:35:12+00:00</dc:date>
<dc:creator>FSF Events</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/events/rms-20190715-frankfurt">
<title>FSF Events: Richard Stallman - &quot;Are we facing surveillance like in China?&quot; (Frankurt, Germany)</title>
<link>http://www.fsf.org/events/rms-20190715-frankfurt</link>
<content:encoded>&lt;blockquote&gt;&lt;p&gt;Digital technology has enabled governments to impose surveillance
that Stalin could only dream of, making it next to impossible to
talk with a reporter (or do most things) unmonitored. This puts
democracy and human rights danger, as illustrated by the
totalitarian regime of China today.&lt;/p&gt;
&lt;p&gt;Stallman will present the absolute upper limit on surveillance
of the public compatible with democracy, and present ways to
design systems that don&#39;t collect dossiers on people, except those
designated by courts based on valid specific suspicion of crime.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This speech by Richard Stallman will be nontechnical, admission is
gratis, and the public is encouraged to attend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;em&gt;Festsaal, Casino (&lt;a href=&quot;http://www.uni-frankfurt.de/73177180/GU_Lageplan_Campus_Westend_0318_Mensa_Bib_ENGL.pdf?&quot;&gt;#7&lt;/a&gt;),
Campus Westend, Johann Wolfgang Goethe-Universität Frankfurt am Main,
GrĂźneburgplatz 1, 60323 Frankfurt&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Please fill out our contact form, so that &lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=393&amp;amp;reset=1&quot;&gt;we
can contact you about future events in and around Frankfurt.&lt;/a&gt;&lt;/p&gt;</content:encoded>
<dc:date>2019-06-18T08:15:00+00:00</dc:date>
<dc:creator>FSF Events</dc:creator>
</item>
<item rdf:about="https://gnu.org/software/guix/blog/2019/substitutes-are-now-available-as-lzip/">
<title>GNU Guix: Substitutes are now available as lzip</title>
<link>https://gnu.org/software/guix/blog/2019/substitutes-are-now-available-as-lzip/</link>
<content:encoded>&lt;p&gt;For a long time, our build farm at ci.guix.gnu.org has been delivering
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Substitutes.html&quot;&gt;substitutes&lt;/a&gt;
(pre-built binaries) compressed with gzip. Gzip was never the best
choice in terms of compression ratio, but it was a reasonable and
convenient choice: its rock-solid, and zlib made it easy for us to have
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/guix/zlib.scm&quot;&gt;Guile
bindings&lt;/a&gt;
to perform in-process compression in our multi-threaded &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-publish.html&quot;&gt;&lt;code&gt;guix publish&lt;/code&gt;&lt;/a&gt;
server.&lt;/p&gt;&lt;p&gt;With the exception of building software from source, downloads take the
most time of Guix package upgrades. If users can download less,
upgrades become faster, and happiness ensues. Time has come to improve
on this, and starting from early June, Guix can publish and fetch
&lt;a href=&quot;https://nongnu.org/lzip/&quot;&gt;lzip&lt;/a&gt;-compressed substitutes, in addition to
gzip.&lt;/p&gt;&lt;h1&gt;Lzip&lt;/h1&gt;&lt;p&gt;&lt;a href=&quot;https://nongnu.org/lzip/&quot;&gt;Lzip&lt;/a&gt; is a relatively little-known
compression format, initially developed by Antonio Diaz Diaz ca. 2013.
It has several C and C++ implementations with surprisingly few lines of
code, which is always reassuring. One of its distinguishing features is
a very good compression ratio with reasonable CPU and memory
requirements, &lt;a href=&quot;https://nongnu.org/lzip/lzip_benchmark.html&quot;&gt;according to benchmarks published by the
authors&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://nongnu.org/lzip/lzlib.html&quot;&gt;Lzlib&lt;/a&gt; provides a well-documented C
interface and Pierre Neidhardt set out to write bindings for that
library, which eventually landed as the &lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/guix/lzlib.scm&quot;&gt;&lt;code&gt;(guix lzlib)&lt;/code&gt;
module&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;With this in place we were ready to start migrating our tools, and then
our build farm, to lzip compression, so we can all enjoy smaller
downloads. Well, easier said than done!&lt;/p&gt;&lt;h1&gt;Migrating&lt;/h1&gt;&lt;p&gt;The compression format used for substitutes is not a core component like
it can be in “traditional” binary package formats &lt;a href=&quot;https://lwn.net/Articles/789449/&quot;&gt;such as
&lt;code&gt;.deb&lt;/code&gt;&lt;/a&gt; since Guix is conceptually a
“source-based” distro. However, deployed Guix installations did not
support lzip, so we couldnt just switch our build farm to lzip
overnight; we needed to devise a transition strategy.&lt;/p&gt;&lt;p&gt;Guix asks for the availability of substitutes over HTTP. For example, a
question such as:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“Dear server, do you happen to have a binary of
&lt;code&gt;/gnu/store/6yc4ngrsig781bpayax2cg6pncyhkjpq-emacs-26.2&lt;/code&gt; that I could download?”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;translates into prose to an HTTP GET of
&lt;a href=&quot;https://ci.guix.gnu.org/6yc4ngrsig781bpayax2cg6pncyhkjpq.narinfo&quot;&gt;https://ci.guix.gnu.org/6yc4ngrsig781bpayax2cg6pncyhkjpq.narinfo&lt;/a&gt;,
which returns something like:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;StorePath: /gnu/store/6yc4ngrsig781bpayax2cg6pncyhkjpq-emacs-26.2
URL: nar/gzip/6yc4ngrsig781bpayax2cg6pncyhkjpq-emacs-26.2
Compression: gzip
NarHash: sha256:0h2ibqpqyi3z0h16pf7ii6l4v7i2wmvbrxj4ilig0v9m469f6pm9
NarSize: 134407424
References: 2dk55i5wdhcbh2z8hhn3r55x4873iyp1-libxext-1.3.3 …
FileSize: 48501141
System: x86_64-linux
Deriver: 6xqibvc4v8cfppa28pgxh0acw9j8xzhz-emacs-26.2.drv
Signature: 1;berlin.guixsd.org;KHNpZ25hdHV…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(This narinfo format is inherited from &lt;a href=&quot;https://nixos.org/nix/&quot;&gt;Nix&lt;/a&gt; and
implemented
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/guix/scripts/substitute.scm?id=121d9d1a7a2406a9b1cbe22c34343775f5955b34#n283&quot;&gt;here&lt;/a&gt;
and
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/guix/scripts/publish.scm?id=121d9d1a7a2406a9b1cbe22c34343775f5955b34#n265&quot;&gt;here&lt;/a&gt;.)
This tells us we can download the actual binary from
&lt;code&gt;/nar/gzip/…-emacs-26.2&lt;/code&gt;, and that it will be about 46 MiB (the
&lt;code&gt;FileSize&lt;/code&gt; field.) This is what &lt;code&gt;guix publish&lt;/code&gt; serves.&lt;/p&gt;&lt;p&gt;The trick we came up with was to allow &lt;code&gt;guix publish&lt;/code&gt; to advertise
several URLs, one per compression format. Thus, for recently-built
substitutes, we get something &lt;a href=&quot;https://ci.guix.gnu.org/mvhaar2iflscidl0a66x5009r44fss15.narinfo&quot;&gt;like
this&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;StorePath: /gnu/store/mvhaar2iflscidl0a66x5009r44fss15-gimp-2.10.12
URL: nar/gzip/mvhaar2iflscidl0a66x5009r44fss15-gimp-2.10.12
Compression: gzip
FileSize: 30872887
URL: nar/lzip/mvhaar2iflscidl0a66x5009r44fss15-gimp-2.10.12
Compression: lzip
FileSize: 18829088
NarHash: sha256:10n3nv3clxr00c9cnpv6x7y2c66034y45c788syjl8m6ga0hbkwy
NarSize: 94372664
References: 05zlxc7ckwflz56i6hmlngr86pmccam2-pcre-8.42 …
System: x86_64-linux
Deriver: vi2jkpm9fd043hm0839ibbb42qrv5xyr-gimp-2.10.12.drv
Signature: 1;berlin.guixsd.org;KHNpZ25hdHV…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice that there are two occurrences of the &lt;code&gt;URL&lt;/code&gt;, &lt;code&gt;Compression&lt;/code&gt;, and
&lt;code&gt;FileSize&lt;/code&gt; fields: one for gzip, and one for lzip. Old Guix instances
will just pick the first one, gzip; newer Guix will pick whichever
supported method provides the smallest &lt;code&gt;FileSize&lt;/code&gt;, usually lzip. This
will make migration trivial in the future, should we add support for
other compression methods.&lt;/p&gt;&lt;p&gt;Users need to upgrade their Guix daemon to benefit from lzip. On a
“foreign distro”, simply run &lt;code&gt;guix pull&lt;/code&gt; as root. On standalone Guix
systems, run &lt;code&gt;guix pull &amp;amp;&amp;amp; sudo guix system reconfigure /etc/config.scm&lt;/code&gt;. In both cases, the daemon has to be restarted, be it
with &lt;code&gt;systemctl restart guix-daemon.service&lt;/code&gt; or with &lt;code&gt;herd restart guix-daemon&lt;/code&gt;.&lt;/p&gt;&lt;h1&gt;First impressions&lt;/h1&gt;&lt;p&gt;This new gzip+lzip scheme has been deployed on ci.guix.gnu.org for a
week. Specifically, we run &lt;code&gt;guix publish -C gzip:9 -C lzip:9&lt;/code&gt;, meaning
that we use the highest compression ratio for both compression methods.&lt;/p&gt;&lt;p&gt;Currently, only a small subset of the package substitutes are available
as both lzip and gzip; those that were already available as gzip have
not been recompressed. The following Guile program that taps into the
API of &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-weather.html&quot;&gt;&lt;code&gt;guix weather&lt;/code&gt;&lt;/a&gt;
allows us to get some insight:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(use-modules (gnu) (guix)
(guix monads)
(guix scripts substitute)
(srfi srfi-1)
(ice-9 match))
(define all-packages
(@@ (guix scripts weather) all-packages))
(define package-outputs
(@@ (guix scripts weather) package-outputs))
(define (fetch-lzip-narinfos)
(mlet %store-monad ((items (package-outputs (all-packages))))
(return
(filter (lambda (narinfo)
(member &quot;lzip&quot; (narinfo-compressions narinfo)))
(lookup-narinfos &quot;https://ci.guix.gnu.org&quot; items)))))
(define (lzip/gzip-ratio narinfo)
(match (narinfo-file-sizes narinfo)
((gzip lzip)
(/ lzip gzip))))
(define (average lst)
(/ (reduce + 0 lst)
(length lst) 1.))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Lets explore this at the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop&quot;&gt;REPL&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;scheme@(guile-user)&amp;gt; (define lst
(with-store s
(run-with-store s (fetch-lzip-narinfos))))
computing 9,897 package derivations for x86_64-linux...
updating substitutes from &#39;https://ci.guix.gnu.org&#39;... 100.0%
scheme@(guile-user)&amp;gt; (length lst)
$4 = 2275
scheme@(guile-user)&amp;gt; (average (map lzip/gzip-ratio lst))
$5 = 0.7398994395478715&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As of this writing, around 20% of the package substitutes are
available as lzip, so take the following stats with a grain of salt.
Among those, the lzip-compressed substitute is on average 26% smaller
than the gzip-compressed one. What if we consider only packages bigger
than 5 MiB uncompressed?&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;scheme@(guile-user)&amp;gt; (define biggest
(filter (lambda (narinfo)
(&amp;gt; (narinfo-size narinfo)
(* 5 (expt 2 20))))
lst))
scheme@(guile-user)&amp;gt; (average (map lzip/gzip-ratio biggest))
$6 = 0.5974238562384483
scheme@(guile-user)&amp;gt; (length biggest)
$7 = 440&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For those packages, lzip yields substitutes that are 40% smaller on
average. Pretty nice! Lzip decompression is slightly more
CPU-intensive than gzip decompression, but downloads are
bandwidth-bound, so the benefits clearly outweigh the costs.&lt;/p&gt;&lt;h1&gt;Going forward&lt;/h1&gt;&lt;p&gt;The switch from gzip to lzip has the potential to make upgrades “feel”
faster, and that is great in itself.&lt;/p&gt;&lt;p&gt;Fundamentally though, weve always been looking in this project at
peer-to-peer solutions with envy. Of course, the main motivation is to
have a community-supported and resilient infrastructure, rather than a
centralized one, and that vision goes &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2017/reproducible-builds-a-status-update/&quot;&gt;hand-in-hand with reproducible
builds&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We started working on &lt;a href=&quot;https://issues.guix.gnu.org/issue/33899&quot;&gt;an extension to publish and fetch
substitutes&lt;/a&gt; over
&lt;a href=&quot;https://ipfs.io/&quot;&gt;IPFS&lt;/a&gt;. Thanks to its content-addressed nature, IPFS
has the potential to further reduce the amount of data that needs to be
downloaded on an upgrade.&lt;/p&gt;&lt;p&gt;The good news is that IPFS developers are also &lt;a href=&quot;https://github.com/ipfs/package-managers&quot;&gt;interested in working
with package manager
developers&lt;/a&gt;, and I bet
therell be interesting discussions at &lt;a href=&quot;https://camp.ipfs.io/&quot;&gt;IPFS
Camp&lt;/a&gt; in just a few days. Were eager to pursue
our IPFS integration work, and if youd like to join us and hack the
good hack, &lt;a href=&quot;https://www.gnu.org/software/guix/contact/&quot;&gt;lets get in
touch!&lt;/a&gt;&lt;/p&gt;&lt;h4&gt;About GNU Guix&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/guix&quot;&gt;GNU Guix&lt;/a&gt; is a transactional package
manager and an advanced distribution of the GNU system that &lt;a href=&quot;https://www.gnu.org/distros/free-system-distribution-guidelines.html&quot;&gt;respects
user
freedom&lt;/a&gt;.
Guix can be used on top of any system running the kernel Linux, or it
can be used as a standalone operating system distribution for i686,
x86_64, ARMv7, and AArch64 machines.&lt;/p&gt;&lt;p&gt;In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection. When used as a standalone
GNU/Linux distribution, Guix offers a declarative, stateless approach to
operating system configuration management. Guix is highly customizable
and hackable through &lt;a href=&quot;https://www.gnu.org/software/guile&quot;&gt;Guile&lt;/a&gt;
programming interfaces and extensions to the
&lt;a href=&quot;http://schemers.org&quot;&gt;Scheme&lt;/a&gt; language.&lt;/p&gt;</content:encoded>
<dc:date>2019-06-17T12:30:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="https://gnunet.org/#gnunet-0.11.5-release">
<title>GNUnet News: 2019-06-05: GNUnet 0.11.5 released</title>
<link>https://gnunet.org/#gnunet-0.11.5-release</link>
<content:encoded>&lt;h3&gt;
&lt;a name=&quot;gnunet-0.11.5-release&quot;&gt;2019-06-05: GNUnet 0.11.5 released&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;
We are pleased to announce the release of GNUnet 0.11.5.
&lt;/p&gt;
&lt;p&gt;
This is a bugfix release for 0.11.4, mostly fixing a few
minor bugs and improving performance, in particular for
identity management with a large number of egos.
In the wake of this release, we also launched the
&lt;a href=&quot;https://rest.gnunet.org&quot;&gt;REST API documentation&lt;/a&gt;.
In
terms of usability, users should be aware that there are still a large
number of known open issues in particular with respect to ease of use,
but also some critical privacy issues especially for mobile users.
Also, the nascent network is tiny (about 200 peers) and thus unlikely to
provide good anonymity or extensive amounts of interesting
information. As a result, the 0.11.5 release is still only suitable
for early adopters with some reasonable pain tolerance.
&lt;/p&gt;
&lt;h4&gt;Download links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.5.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.5.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.5.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.5.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.5.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.5.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.5.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.5.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
gnunet-gtk saw some minor changes to adopt it to API changes in the main code
related to the identity improvements.
gnunet-fuse was not released again, as there were no
changes and the 0.11.0 version is expected to continue to work fine
with gnunet-0.11.5.
&lt;/p&gt;
&lt;p&gt;
Note that due to mirror synchronization, not all links might be functional
early after the release. For direct access try &lt;a href=&quot;http://ftp.gnu.org/gnu/gnunet/&quot;&gt;http://ftp.gnu.org/gnu/gnunet/&lt;/a&gt;
&lt;/p&gt;
&lt;h4&gt;Noteworthy changes in 0.11.5 (since 0.11.4)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;tt&gt;gnunet-identity&lt;/tt&gt; is much faster when creating or deleting
egos given a large number of existing egos.
&lt;/li&gt;
&lt;li&gt;
GNS now supports CAA records.
&lt;/li&gt;
&lt;li&gt;
Documentation, comments and code quality was improved.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Known Issues&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
There are known major design issues in the TRANSPORT, ATS and CORE subsystems
which will need to be addressed in the future to achieve acceptable usability,
performance and security.
&lt;/li&gt;
&lt;li&gt;
There are known moderate implementation limitations in CADET that
negatively impact performance. Also CADET may unexpectedly deliver messages out-of-order.
&lt;/li&gt;
&lt;li&gt;
There are known moderate design issues in FS that also impact
usability and performance.
&lt;/li&gt;
&lt;li&gt;
There are minor implementation limitations in SET that create
unnecessary attack surface for availability.
&lt;/li&gt;
&lt;li&gt;
The RPS subsystem remains experimental.
&lt;/li&gt;
&lt;li&gt;
Some high-level tests in the test-suite fail non-deterministically due to
the low-level TRANSPORT issues.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In addition to this list, you may also want to consult our bug tracker
at &lt;a href=&quot;https://bugs.gnunet.org/&quot;&gt;bugs.gnunet.org&lt;/a&gt; which lists
about 190 more specific issues.
&lt;/p&gt;
&lt;h4&gt;Thanks&lt;/h4&gt;
&lt;p&gt;
This release was the work of many people. The following people
contributed code and were thus easily identified:
Christian Grothoff, Florian Dold, Marcello Stanisci, ng0, Martin Schanzenbach and Bernd Fix.
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-05T00:00:00+00:00</dc:date>
<dc:creator>GNUnet News</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9442">
<title>gengetopt @ Savannah: 2.23 released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9442</link>
<content:encoded>&lt;p&gt;New version (2.23) was released. Main changes were in build system, so please report any issues you notice.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-04T08:41:09+00:00</dc:date>
<dc:creator>Gray Wolf</dc:creator>
</item>
<item rdf:about="http://wingolog.org/2019/06/03/pictie-my-c-to-webassembly-workbench">
<title>Andy Wingo: pictie, my c++-to-webassembly workbench</title>
<link>http://wingolog.org/archives/2019/06/03/pictie-my-c-to-webassembly-workbench</link>
<content:encoded>&lt;div&gt;&lt;p&gt;Hello, interwebs! Today I&#39;d like to share a little skunkworks project with y&#39;all: &lt;a href=&quot;https://github.com/wingo/pictie&quot;&gt;Pictie&lt;/a&gt;, a workbench for WebAssembly C++ integration on the web.&lt;/p&gt;&lt;p&gt;&lt;b id=&quot;pictie-status&quot;&gt;loading pictie...&lt;/b&gt;&lt;/p&gt;&lt;div id=&quot;pictie-log&quot;&gt;&lt;/div&gt;&lt;form hidden=&quot;1&quot; id=&quot;pictie-form&quot;&gt;
&lt;label for=&quot;entry&quot; id=&quot;pictie-prompt&quot;&gt;&amp;gt; &lt;/label&gt;
&lt;input id=&quot;pictie-entry&quot; name=&quot;entry&quot; size=&quot;40&quot; type=&quot;text&quot; /&gt;
&lt;/form&gt;&lt;p&gt;&amp;lt;noscript&amp;gt;
JavaScript disabled, no pictie demo. See &lt;a href=&quot;https://github.com/wingo/pictie/&quot;&gt;the pictie web page&lt;/a&gt; for more information.
&amp;lt;/noscript&amp;gt;&amp;gt;&amp;amp;&amp;amp;&amp;lt;&amp;amp;&amp;gt;&amp;gt;&amp;gt;&amp;amp;&amp;amp;&amp;gt;&amp;lt;&amp;lt;&amp;gt;&amp;gt;&amp;amp;&amp;amp;&amp;lt;&amp;gt;&amp;lt;&amp;gt;&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;wtf just happened????!?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;So! If everything went well, above you have some colors and a prompt that accepts Javascript expressions to evaluate. If the result of evaluating a JS expression is a painter, we paint it onto a canvas.&lt;/p&gt;&lt;p&gt;But allow me to back up a bit. These days everyone is talking about WebAssembly, and I think with good reason: just as many of the world&#39;s programs run on JavaScript today, tomorrow much of it will also be in languages compiled to WebAssembly. JavaScript isn&#39;t going anywhere, of course; it&#39;s around for the long term. It&#39;s the &quot;also&quot; aspect of WebAssembly that&#39;s interesting, that it appears to be a computing substrate that is compatible with JS and which can extend the range of the kinds of programs that can be written for the web.&lt;/p&gt;&lt;p&gt;And yet, it&#39;s early days. What are programs of the future going to look like? What elements of the web platform will be needed when we have systems composed of WebAssembly components combined with JavaScript components, combined with the browser? Is it all going to work? Are there missing pieces? What&#39;s the status of the toolchain? What&#39;s the developer experience? What&#39;s the user experience?&lt;/p&gt;&lt;p&gt;When you look at the current set of applications targetting WebAssembly in the browser, mostly it&#39;s games. While compelling, games don&#39;t provide a whole lot of insight into the shape of the future web platform, inasmuch as there doesn&#39;t have to be much JavaScript interaction when you have an already-working C++ game compiled to WebAssembly. (Indeed, much of the incidental interactions with JS that are currently necessary -- bouncing through JS in order to call WebGL -- people are actively working on removing all of that overhead, so that WebAssembly can call platform facilities (WebGL, etc) directly. But I digress!)&lt;/p&gt;&lt;p&gt;For WebAssembly to really succeed in the browser, there should also be incremental stories -- what does it look like when you start to add WebAssembly modules to a system that is currently written mostly in JavaScript?&lt;/p&gt;&lt;p&gt;To find out the answers to these questions and to evaluate potential platform modifications, I needed a small, standalone test case. So... I wrote one? It seemed like a good idea at the time.&lt;/p&gt;&lt;p&gt;&lt;b&gt;pictie is a test bed&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Pictie is a simple, standalone C++ graphics package implementing an algebra of painters. It was created not to be a great graphics package but rather to be a test-bed for compiling C++ libraries to WebAssembly. You can read more about it on &lt;a href=&quot;https://github.com/wingo/pictie&quot;&gt;its github page&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Structurally, pictie is a modern C++ library with a functional-style interface, smart pointers, reference types, lambdas, and all the rest. We use emscripten to compile it to WebAssembly; you can see more information on how that&#39;s done in the repository, or check the &lt;a href=&quot;https://github.com/wingo/pictie/blob/master/README.md#webassembly&quot;&gt;README&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Pictie is inspired by Peter Henderson&#39;s &quot;Functional Geometry&quot; (&lt;a href=&quot;http://pmh-systems.co.uk/phAcademic/papers/funcgeo.pdf&quot;&gt;1982&lt;/a&gt;, &lt;a href=&quot;https://eprints.soton.ac.uk/257577/1/funcgeo2.pdf&quot;&gt;2002&lt;/a&gt;). &quot;Functional Geometry&quot; inspired the &lt;a href=&quot;https://sarabander.github.io/sicp/html/2_002e2.xhtml#g_t2_002e2_002e4&quot;&gt;Picture language&lt;/a&gt; from the well-known &lt;i&gt;Structure and Interpretation of Computer Programs&lt;/i&gt; computer science textbook.&lt;/p&gt;&lt;p&gt;&lt;b&gt;prototype in action&lt;/b&gt;&lt;/p&gt;&lt;p&gt;So far it&#39;s been s
<dc:date>2019-06-03T10:10:38+00:00</dc:date>
<dc:creator>Andy Wingo</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9440">
<title>unifont @ Savannah: GNU Unifont 12.1.02 Released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9440</link>
<content:encoded>&lt;p&gt;&lt;strong&gt;1 June 2019&lt;/strong&gt; Unifont 12.1.02 is now available. This version introduces a &lt;strong&gt;Japanese TrueType version&lt;/strong&gt;, unifont_jp, replacing over 10,000 ideographs from the default Unifont build with kanji from the public domain Jiskan16 font. This version also contains redrawn Devanagari and Bengali glyphs. Full details are in the ChangeLog file.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Download this release at:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ftpmirror.gnu.org/unifont/unifont-12.1.02/&quot;&gt;https://ftpmirror.gnu.org/unifont/unifont-12.1.02/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;or if that fails,
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ftp.gnu.org/gnu/unifont/unifont-12.1.02/&quot;&gt;https://ftp.gnu.org/gnu/unifont/unifont-12.1.02/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;or, as a last resort,
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/unifont/unifont-12.1.02/&quot;&gt;ftp://ftp.gnu.org/gnu/unifont/unifont-12.1.02/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-06-01T22:43:49+00:00</dc:date>
<dc:creator>Paul Hardy</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/events/rms-20190622-mayhew">
<title>FSF Events: CANCELLED - Richard Stallman - &quot;The Free Software Movement&quot; (Mayhew, MS)</title>
<link>http://www.fsf.org/events/rms-20190622-mayhew</link>
<content:encoded>&lt;strike&gt;&lt;blockquote&gt;The Free Software Movement campaigns for computer users&#39;
freedom to cooperate and control their own computing. The Free
Software Movement developed the GNU operating system, typically used
together with the kernel Linux, specifically to make these freedoms
possible.&lt;/blockquote&gt;&lt;/strike&gt;
&lt;strike&gt;&lt;/strike&gt;&lt;p&gt;&lt;strike&gt;This speech by Richard Stallman will be nontechnical, admission is
gratis, and the public is encouraged to attend.&lt;/strike&gt;
&lt;strike&gt;&lt;/strike&gt;&lt;/p&gt;&lt;p&gt;&lt;strike&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;em&gt;Lyceum, 8731 South Frontage Rd., Mayhew, MS 39753&lt;/em&gt;&lt;/strike&gt;
&lt;strike&gt;&lt;/strike&gt;&lt;/p&gt;&lt;p&gt;&lt;strike&gt;Please fill out our contact form, so that &lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=581&amp;amp;reset=1&quot;&gt;we
can contact you about future events in and around Mayhew.&lt;/a&gt;&lt;/strike&gt;
&lt;/p&gt;&lt;p&gt;The event this speech was going to be part of has been cancelled.&lt;/p&gt;</content:encoded>
<dc:date>2019-05-30T17:10:00+00:00</dc:date>
<dc:creator>FSF Events</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/events/rms-20190607-vienna">
<title>FSF Events: Richard Stallman - &quot;Free software and your freedom&quot; (Vienna, Austria)</title>
<link>http://www.fsf.org/events/rms-20190607-vienna</link>
<content:encoded>&lt;p&gt;
&lt;/p&gt;&lt;blockquote&gt;
Most computers now contain at least some free software. This success makes it more important than ever to know about the ideas behind free software. Users should be aware of the freedoms it gives us and how to make use of it.
&lt;/blockquote&gt;
&lt;blockquote&gt;
As opposed to secrecy and profit orientation, free access to and sharing of knowledge and ideas have the potential to change the world. Knowledge should be treated as a common good. This revolutionary idea was the base on which GNU/Linux and the free and collaborative encyclopedia Wikipedia were built.
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This speech by Richard Stallman will be nontechnical, admission is
gratis, and the public is encouraged to attend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;em&gt;Hall: FS0.01, Fachhochschule FH Technikum Wien, Höchstädtplatz 6, KG Brigittenau, 1200 Wien, Österreich&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Please fill out our contact form, so that &lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=300&amp;amp;reset=1&quot;&gt;we
can contact you about future events in and around Vienna.&lt;/a&gt;&lt;/p&gt;</content:encoded>
<dc:date>2019-05-30T16:55:00+00:00</dc:date>
<dc:creator>FSF Events</dc:creator>
</item>
<item rdf:about="https://www.gnu.org/software/guile/news/join-guile-guix-days-strasbourg-2019.html">
<title>GNU Guile: Join the Guile and Guix Days in Strasbourg, June 2122!</title>
<link>https://www.gnu.org/software/guile/news/join-guile-guix-days-strasbourg-2019.html</link>
<content:encoded>&lt;p&gt;Were organizing Guile Days at the University of Strasbourg, France,
&lt;a href=&quot;https://journeesperl.fr/jp2019/&quot;&gt;co-located with the Perl Workshop&lt;/a&gt;,
on June 21st and 22nd.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Guile Days 2019&quot; src=&quot;https://www.gnu.org/software/guile/static/base/img/guile-days-2019.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;em&gt;Update&lt;/em&gt;: The program is now complete, &lt;a href=&quot;https://journeesperl.fr/jp2019/schedule?day=2019-06-21&quot;&gt;view the schedule
on-line&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The schedule is not complete yet, but we can already announce a couple
of events:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Getting Started with GNU Guix&lt;/em&gt; will be an introductory hands-on
session to &lt;a href=&quot;https://www.gnu.org/software/guix/&quot;&gt;Guix&lt;/a&gt;, targeting an
audience of people who have some experience with GNU/Linux but are
new to Guix.&lt;/li&gt;&lt;li&gt;During a “&lt;em&gt;code buddy&lt;/em&gt;” session, experienced Guile programmers will
be here to get you started programming in Guile, and to answer
questions and provide guidance while you hack at your pace on the
project of your choice.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If youre already a Guile or Guix user or developer, consider submitting
by June 8th, &lt;a href=&quot;https://journeesperl.fr/jp2019/newtalk&quot;&gt;on the web site&lt;/a&gt;,
talks on topics such as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The neat Guile- or Guix-related project youve been working on.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Cool Guile hacking topics—Web development, databases, system
development, graphical user interfaces, shells, you name it!&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Fancy Guile technology—concurrent programming with Fibers, crazy
macrology, compiler front-ends, JIT compilation and Guile 3,
development environments, etc.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Guixy things: on Guix subsystems, services, the Shepherd, Guile
development with Guix, all things OS-level in Guile, Cuirass,
reproducible builds, bootstrapping, Mes and Gash, all this!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can also propose hands-on workshops, which could last anything from
an hour to a day. We expect newcomers at this event, people who dont
know Guile and Guix and want to learn about it. Consider submitting
introductory workshops on Guile and Guix!&lt;/p&gt;&lt;p&gt;We encourage submissions from people in communities usually
underrepresented in free software, including women, people in sexual
minorities, or people with disabilities.&lt;/p&gt;&lt;p&gt;We want to make this event a pleasant experience for everyone, and
participation is subject to a &lt;a href=&quot;https://journeesperl.fr/jp2019/conduct.html&quot;&gt;code of
conduct&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Many thanks to the organizers of the &lt;a href=&quot;https://journeesperl.fr/jp2019/&quot;&gt;Perl
Workshop&lt;/a&gt; and to the sponsors of the
event: RENATER, Université de Strasbourg, X/Stra, and Worteks.&lt;/p&gt;</content:encoded>
<dc:date>2019-05-28T09:11:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/events/rms-20190606-brno-smartcity">
<title>FSF Events: Richard Stallman - &quot;Computing, freedom, and privacy&quot; (Brno, Czech Republic)</title>
<link>http://www.fsf.org/events/rms-20190606-brno-smartcity</link>
<content:encoded>&lt;blockquote&gt;The way digital technology is developing, it threatens our
freedom, within our computers and in the internet. What are the
threats? What must we change?&lt;/blockquote&gt;
&lt;p&gt;This speech by Richard Stallman will be nontechnical, admission to just the speech is gratis—&lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=580&amp;amp;reset=1&quot;&gt;provided you register via the FSF link&lt;/a&gt;—and the public is encouraged to attend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;em&gt;Pavilion G1, Digital City Stage, Brno Fair Grounds (BVV), URBIS Smart City Fair, Výstaviště 405/1, 603 00 &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=580&amp;amp;reset=1&quot;&gt;Please register, so that we can accommodate all the people who wish to
attend&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Please fill out our contact form, so that &lt;a href=&quot;https://my.fsf.org/civicrm/profile/create?gid=578&amp;amp;reset=1&quot;&gt;we
can contact you about future events in and around Brno.&lt;/a&gt;&lt;/p&gt;</content:encoded>
<dc:date>2019-05-24T13:35:00+00:00</dc:date>
<dc:creator>FSF Events</dc:creator>
</item>
<item rdf:about="http://wingolog.org/2019/05/24/lightening-run-time-code-generation">
<title>Andy Wingo: lightening run-time code generation</title>
<link>http://wingolog.org/archives/2019/05/24/lightening-run-time-code-generation</link>
<content:encoded>&lt;div&gt;&lt;p&gt;The upcoming Guile 3 release will have just-in-time native code generation. Finally, amirite? There&#39;s lots that I&#39;d like to share about that and I need to start somewhere, so this article is about one piece of it: &lt;a href=&quot;https://gitlab.com/wingo/lightening&quot;&gt;Lightening, a library to generate machine code&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;on lightning&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Lightening is a fork of &lt;a href=&quot;https://www.gnu.org/software/lightning/&quot;&gt;GNU Lightning&lt;/a&gt;, adapted to suit the needs of Guile. In fact at first we chose to use GNU Lightning directly, &quot;vendored&quot; into the Guile source respository via the &lt;a href=&quot;https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging&quot;&gt;git subtree mechanism&lt;/a&gt;. (I see that in the meantime, &lt;tt&gt;git&lt;/tt&gt; gained a kind of a &lt;a href=&quot;https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt&quot;&gt;&lt;tt&gt;subtree&lt;/tt&gt; command&lt;/a&gt;; one day I will have to figure out what it&#39;s for.)&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/lightning/&quot;&gt;GNU Lightning&lt;/a&gt; has lots of things going for it. It has support for many architectures, even things like Itanium that I don&#39;t really care about but which a couple Guile users use. It abstracts the differences between e.g. x86 and ARMv7 behind a common API, so that in Guile I don&#39;t need to duplicate the JIT for each back-end. Such an abstraction can have a slight performance penalty, because maybe it missed the opportunity to generate optimal code, but this is acceptable to me: I was more concerned about the maintenance burden, and GNU Lightning seemed to solve that nicely.&lt;/p&gt;&lt;p&gt;GNU Lightning also has &lt;a href=&quot;https://www.gnu.org/software/lightning/manual/&quot;&gt;fantastic documentation&lt;/a&gt;. It&#39;s written in C and not C++, which is the right thing for Guile at this time, and it&#39;s also released under the LGPL, which is Guile&#39;s license. As it&#39;s a GNU project there&#39;s a good chance that GNU Guile&#39;s needs might be taken into account if any changes need be made.&lt;/p&gt;&lt;p&gt;I mentally associated Paolo Bonzini with the project, who I knew was a good no-nonsense hacker, as he used Lightning for a &lt;a href=&quot;http://smalltalk.gnu.org/&quot;&gt;smalltalk implementation&lt;/a&gt;; and I knew also that Matthew Flatt used Lightning in &lt;a href=&quot;https://racket-lang.org/&quot;&gt;Racket&lt;/a&gt;. Then I looked in the source code to see architecture support and was pleasantly surprised to see MIPS, POWER, and so on, so I went with GNU Lightning for Guile in our &lt;a href=&quot;https://www.gnu.org/software/guile/news/gnu-guile-291-beta-released.html&quot;&gt;2.9.1 release last October&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;on lightening the lightning&lt;/b&gt;&lt;/p&gt;&lt;p&gt;When I chose GNU Lightning, I had in mind that it was a very simple library to cheaply write machine code into buffers. (Incidentally, if you have never worked with this stuff, I remember a time when I was pleasantly surprised to realize that an assembler could be a library and not just a program that processes text. A CPU interprets machine code. Machine code is just bytes, and you can just write C (or Scheme, or whatever) functions that write bytes into buffers, and pass those buffers off to the CPU. Now you know!)&lt;/p&gt;&lt;p&gt;Anyway indeed GNU Lightning 1.4 or so was that very simple library that I had in my head. I needed simple because I would need to debug any problems that came up, and I didn&#39;t want to add more complexity to the C side of Guile -- eventually I should be migrating this code over to Scheme anyway. And, of course, simple can mean fast, and I needed fast code generation.&lt;/p&gt;&lt;p&gt;However, GNU Lightning has a new release series, the 2.x series. This series is a rewrite in a way of the old version. On the plus side, this new series adds all of the weir
<dc:date>2019-05-24T08:44:56+00:00</dc:date>
<dc:creator>Andy Wingo</dc:creator>
</item>
<item rdf:about="https://www.gnu.org/software/guile/news/gnu-guile-292-beta-released.html">
<title>GNU Guile: GNU Guile 2.9.2 (beta) released</title>
<link>https://www.gnu.org/software/guile/news/gnu-guile-292-beta-released.html</link>
<content:encoded>&lt;p&gt;We are delighted to announce GNU Guile 2.9.2, the second beta release in
preparation for the upcoming 3.0 stable series. See the &lt;a href=&quot;https://lists.gnu.org/archive/html/guile-devel/2019-05/msg00030.html&quot;&gt;release
announcement&lt;/a&gt;
for full details and a download link.&lt;/p&gt;&lt;p&gt;This release extends just-in-time (JIT) native code generation support
to the ia32, ARMv7, and AArch64 architectures. Under the hood, we
swapped out GNU Lightning for a related fork called
&lt;a href=&quot;https://gitlab.com/wingo/lightening/&quot;&gt;Lightening&lt;/a&gt;, which was better
adapted to Guile&#39;s needs.&lt;/p&gt;&lt;p&gt;GNU Guile 2.9.2 is a beta release, and as such offers no API or ABI
stability guarantees. Users needing a stable Guile are advised to stay
on the stable 2.2 series.&lt;/p&gt;&lt;p&gt;Users on the architectures that just gained JIT support are especially
encouraged to report experiences (good or bad) to &lt;code&gt;guile-devel@gnu.org&lt;/code&gt;.
If you know you found a bug, please do send a note to
&lt;code&gt;bug-guile@gnu.org&lt;/code&gt;. Happy hacking!&lt;/p&gt;</content:encoded>
<dc:date>2019-05-23T21:00:00+00:00</dc:date>
<dc:creator>Andy Wingo</dc:creator>
</item>
<item rdf:about="http://wingolog.org/2019/05/23/bigint-shipping-in-firefox">
<title>Andy Wingo: bigint shipping in firefox!</title>
<link>http://wingolog.org/archives/2019/05/23/bigint-shipping-in-firefox</link>
<content:encoded>&lt;div&gt;&lt;p&gt;I am delighted to share with folks the results of a project I have been helping out on for the last few months: implementation of &quot;BigInt&quot; in Firefox, which is finally shipping in Firefox 68 (beta).&lt;/p&gt;&lt;p&gt;&lt;b&gt;what&#39;s a bigint?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;BigInts are a new kind of JavaScript primitive value, like numbers or strings. A BigInt is a true integer: it can take on the value of any finite integer (subject to some arbitrarily large implementation-defined limits, such as the amount of memory in your machine). This contrasts with JavaScript number values, which have the well-known property of &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER&quot;&gt;only being able to precisely represent integers between -2&lt;sup&gt;53&lt;/sup&gt; and 2&lt;sup&gt;53&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;BigInts are written like &quot;normal&quot; integers, but with an &lt;tt&gt;n&lt;/tt&gt; suffix:&lt;/p&gt;&lt;pre&gt;var a = 1n;
var b = a + 42n;
b &amp;lt;&amp;lt; 64n
// result: 793209995169510719488n
&lt;/pre&gt;&lt;p&gt;With the bigint proposal, the usual mathematical operations (&lt;tt&gt;+&lt;/tt&gt;, &lt;tt&gt;-&lt;/tt&gt;, &lt;tt&gt;*&lt;/tt&gt;, &lt;tt&gt;/&lt;/tt&gt;, &lt;tt&gt;%&lt;/tt&gt;, &lt;tt&gt;&amp;lt;&amp;lt;&lt;/tt&gt;, &lt;tt&gt;&amp;gt;&amp;gt;&lt;/tt&gt;, &lt;tt&gt;**&lt;/tt&gt;, and the comparison operators) are extended to operate on bigint values. As a new kind of primitive value, bigint values have their own &lt;tt&gt;typeof&lt;/tt&gt;:&lt;/p&gt;&lt;pre&gt;typeof 1n
// result: &#39;bigint&#39;
&lt;/pre&gt;&lt;p&gt;Besides allowing for more kinds of math to be easily and efficiently expressed, BigInt also allows for better interoperability with systems that use 64-bit numbers, such as &lt;a href=&quot;https://github.com/nodejs/node/pull/20220&quot;&gt;&quot;inodes&quot; in file systems&lt;/a&gt;, &lt;a href=&quot;https://sauleau.com/notes/wasm-bigint.html&quot;&gt;WebAssembly i64 values&lt;/a&gt;, &lt;a href=&quot;https://nodejs.org/api/process.html#process_process_hrtime_bigint&quot;&gt;high-precision timers&lt;/a&gt;, and so on.&lt;/p&gt;&lt;p&gt;You can &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt&quot;&gt;read more about the BigInt feature over on MDN&lt;/a&gt;, as usual. You might also like this &lt;a href=&quot;https://developers.google.com/web/updates/2018/05/bigint&quot;&gt;short article on BigInt basics&lt;/a&gt; that V8 engineer Mathias Bynens wrote when Chrome shipped support for BigInt last year. There is an accompanying &lt;a href=&quot;https://v8.dev/blog/bigint&quot;&gt;language implementation&lt;/a&gt; article as well, for those of y&#39;all that enjoy the nitties and the gritties. &lt;/p&gt;&lt;p&gt;&lt;b&gt;can i ship it?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;To try out BigInt in Firefox, simply download a copy of &lt;a href=&quot;https://www.mozilla.org/en-US/firefox/channel/desktop/&quot;&gt;Firefox Beta&lt;/a&gt;. This version of Firefox will be fully released to the public in a few weeks, on July 9th. If you&#39;re reading this in the future, I&#39;m talking about Firefox 68.&lt;/p&gt;&lt;p&gt;BigInt is also shipping already in V8 and Chrome, and my colleague Caio Lima has an project in progress to implement it in JavaScriptCore / WebKit / Safari. Depending on your target audience, BigInt might be deployable already!&lt;/p&gt;&lt;p&gt;&lt;b&gt;thanks&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I must mention that my role in the BigInt work was relatively small; my Igalia colleague Robin Templeton did the bulk of the BigInt implementation work in Firefox, so large ups to them. Hearty thanks also to Mozilla&#39;s Jan de Mooij and Jeff Walden for their patient and detailed code reviews.&lt;/p&gt;&lt;p&gt;Thanks as well to the V8 engineers for their open source implementation of BigInt fundamental algorithms, as we used many of them in Firefox.&lt;/p&gt;&lt;p&gt;Finally, I need to make one big thank-you, and I hope that you will join me in expressing it. The road to ship anything in a web browser is long; besides the &quot;simple matter of programming&quot; that it is to implement a feature, you need a &lt;a href=&quot;https://github.com/tc39/proposal-bigint/blob/master/README.md&quot;&gt;specification with buy-in from implementors and web standards people&lt;/a&gt;, you need a good working relationship with a browser vendor, you need willing technical reviewers, you need to follow up on the inevitable security bugs that any browser change causes, and all of this takes time. It&#39;s all predicated on having the backing of an organization that&#39;s foresighted enough to invest in this kind of long-term, high-reward platform engineering.&lt;/p&gt;&lt;p&gt;In that regard I think all people that work on the web platform should send a big shout-out to &lt;a href=&quot;https://techatbloomberg.com&quot;&gt;Tech at Bloomberg&lt;/a&gt; for making BigInt possible by underwriting all of &lt;a href=&quot;https://igalia.com/&quot;&gt;Igalia&lt;/a&gt;&#39;s work in this area. Thank you, Bloomberg, and happy hacking!&lt;/p&gt;&lt;/div&gt;</content:encoded>
<dc:date>2019-05-23T12:13:59+00:00</dc:date>
<dc:creator>Andy Wingo</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9434">
<title>parallel @ Savannah: GNU Parallel 20190522 (&#39;Akihito&#39;) released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9434</link>
<content:encoded>&lt;p&gt;GNU Parallel 20190522 (&#39;Akihito&#39;) has been released. It is available for download at: &lt;a href=&quot;http://ftpmirror.gnu.org/parallel/&quot;&gt;http://ftpmirror.gnu.org/parallel/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel is 10 years old in a year on 2020-04-22. You are here by invited to a reception on Friday 2020-04-17.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.gnu.org/software/parallel/10-years-anniversary.html&quot;&gt;https://www.gnu.org/software/parallel/10-years-anniversary.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Quote of the month:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;  Amazingly useful script!
&lt;br /&gt;
    -- &lt;a href=&quot;mailto:unxusr@reddit.com&quot;&gt;unxusr@reddit.com&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;New in this release:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;--group-by groups lines depending on value of a column. The value can be computed.
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;How to compress (bzip/gzip) a very large text quickly? &lt;a href=&quot;https://medium.com/&quot;&gt;https://medium.com/&lt;/a&gt;@gchandra/how-to-compress-bzip-gzip-a-very-large-text-quickly-27c11f4c6681
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Simple tutorial to install &amp;amp; use GNU Parallel &lt;a href=&quot;https://medium.com/&quot;&gt;https://medium.com/&lt;/a&gt;@gchandra/simple-tutorial-to-install-use-gnu-parallel-79251120d618
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Introducing Parallel into Shell &lt;a href=&quot;https://petelawson.com/post/parallel-in-shell/&quot;&gt;https://petelawson.com/post/parallel-in-shell/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Bug fixes and man page updates.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get the book: GNU Parallel 2018 &lt;a href=&quot;http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html&quot;&gt;http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel - For people who live life in the parallel lane.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;About GNU Parallel&lt;/h2&gt;
&lt;p&gt;GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You can find more about GNU Parallel at: &lt;a href=&quot;http://www.gnu.org/s/parallel/&quot;&gt;http://www.gnu.org/s/parallel/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You can install GNU Parallel in just 10 seconds with:
&lt;br /&gt;
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - &lt;a href=&quot;http://pi.dk/3&quot;&gt;http://pi.dk/3&lt;/a&gt;) | bash
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Watch the intro video on &lt;a href=&quot;http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1&quot;&gt;http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When using programs that use GNU Parallel to process data for publication please cite:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;O. Tange (2018): GNU Parallel 2018, March 2018, &lt;a href=&quot;https://doi.org/10.5281/zenodo.1146014&quot;&gt;https://doi.org/10.5281/zenodo.1146014&lt;/a&gt;.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you like GNU Parallel:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give a demo at your local user group/team/colleagues
&lt;/li&gt;
&lt;li&gt;Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
&lt;/li&gt;
&lt;li&gt;Get the merchandise &lt;a href=&quot;https://gnuparallel.threadless.com/designs/gnu-parallel&quot;&gt;https://gnuparallel.threadless.com/designs/gnu-parallel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Request or write a review for your favourite blog or magazine
&lt;/li&gt;
&lt;li&gt;Request or build a package for your favourite distribution (if it is not already there)
&lt;/li&gt;
&lt;li&gt;Invite me for your next conference
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use programs that use GNU Parallel for research:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Please cite GNU Parallel in you publications (use --citation)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If GNU Parallel saves you money:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(Have your company) donate to FSF &lt;a href=&quot;https://my.fsf.org/donate/&quot;&gt;https://my.fsf.org/donate/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;About GNU SQL&lt;/h2&gt;
&lt;p&gt;GNU sql aims to give a simple, unified interface for accessing databases through all the different databases&#39; command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The database is addressed using a DBURL. If commands are left out you will get that database&#39;s interactive shell.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When using GNU SQL for a publication please cite:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;About GNU Niceload&lt;/h2&gt;
&lt;p&gt;GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-05-22T20:29:50+00:00</dc:date>
<dc:creator>Ole Tange</dc:creator>
</item>
<item rdf:about="https://gnu.org/software/guix/blog/2019/creating-and-using-a-custom-linux-kernel-on-guix-system/">
<title>GNU Guix: Creating and using a custom Linux kernel on Guix System</title>
<link>https://gnu.org/software/guix/blog/2019/creating-and-using-a-custom-linux-kernel-on-guix-system/</link>
<content:encoded>&lt;p&gt;Guix is, at its core, a source based distribution with
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Substitutes.html&quot;&gt;substitutes&lt;/a&gt;,
and as such building packages from their source code is an expected part
of regular package installations and upgrades. Given this starting
point, it makes sense that efforts are made to reduce the amount of time
spent compiling packages, and recent changes and upgrades to the
building and distribution of substitutes continues to be a topic of
discussion within Guix.&lt;/p&gt;&lt;p&gt;One of the packages which I prefer to not build myself is the
Linux-Libre kernel. The kernel, while not requiring an overabundance of
RAM to build, does take a very long time on my build machine (which my
children argue is actually their Kodi computer), and I will often delay
reconfiguring my laptop while I want for a substitute to be prepared by
the official build farm. The official kernel configuration, as is the
case with many GNU/Linux distributions, errs on the side of
inclusiveness, and this is really what causes the build to take such a
long time when I build the package for myself.&lt;/p&gt;&lt;p&gt;The Linux kernel, however, can also just be described as a package
installed on my machine, and as such can be customized just like any
other package. The procedure is a little bit different, although this
is primarily due to the nature of how the package definition is written.&lt;/p&gt;&lt;p&gt;The
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/linux.scm#n294&quot;&gt;&lt;code&gt;linux-libre&lt;/code&gt;&lt;/a&gt;
kernel package definition is actually a procedure
which creates a package.&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(define* (make-linux-libre version hash supported-systems
#:key
;; A function that takes an arch and a variant.
;; See kernel-config for an example.
(extra-version #f)
(configuration-file #f)
(defconfig &quot;defconfig&quot;)
(extra-options %default-extra-linux-options)
(patches (list %boot-logo-patch)))
...)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The current &lt;code&gt;linux-libre&lt;/code&gt; package is for the 5.1.x series, and is
declared like this:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(define-public linux-libre
(make-linux-libre %linux-libre-version
%linux-libre-hash
&#39;(&quot;x86_64-linux&quot; &quot;i686-linux&quot; &quot;armhf-linux&quot; &quot;aarch64-linux&quot;)
#:patches %linux-libre-5.1-patches
#:configuration-file kernel-config))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Any keys which are not assigned values inherit their default value from
the &lt;code&gt;make-linux-libre&lt;/code&gt; definition. When comparing the two snippets above,
you may notice that the code comment in the first doesn&#39;t actually refer
to the &lt;code&gt;#:extra-version&lt;/code&gt; keyword; it is actually for &lt;code&gt;#:configuration-file&lt;/code&gt;.
Because of this, it is not actually easy to include a custom kernel
configuration from the definition, but don&#39;t worry, there are other ways
to work with what we do have.&lt;/p&gt;&lt;p&gt;There are two ways to create a kernel with a custom kernel configuration.
The first is to provide a standard &lt;code&gt;.config&lt;/code&gt; file during the build
process by including an actual &lt;code&gt;.config&lt;/code&gt; file as a native input to our
custom kernel. The
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/linux.scm#n379&quot;&gt;following&lt;/a&gt;
is a snippet from the custom &#39;configure phase of the &lt;code&gt;make-linux-libre&lt;/code&gt;
package definition:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(let ((build (assoc-ref %standard-phases &#39;build))
(config (assoc-ref (or native-inputs inputs) &quot;kconfig&quot;)))
;; Use a custom kernel configuration file or a default
;; configuration file.
(if config
(begin
(copy-file config &quot;.config&quot;)
(chmod &quot;.config&quot; #o666))
(invoke &quot;make&quot; ,defconfig))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Below is a sample kernel package for one of my computers. Linux-Libre
is just like other regular packages and can be inherited and overridden
like any other:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(define-public linux-libre/E2140
(package
(inherit linux-libre)
(native-inputs
`((&quot;kconfig&quot; ,(local-file &quot;E2140.config&quot;))
,@(alist-delete &quot;kconfig&quot;
(package-native-inputs linux-libre))))))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the same directory as the file defining &lt;code&gt;linux-libre-E2140&lt;/code&gt; is a file
named &lt;code&gt;E2140.config&lt;/code&gt;, which is an actual kernel configuration file. I
left the defconfig keyword of &lt;code&gt;make-linux-libre&lt;/code&gt; blank, so the only
kernel configuration in the package is the one which I included as a
native-input.&lt;/p&gt;&lt;p&gt;The second way to create a custom kernel is to pass a new value to the
extra-options keyword of the &lt;code&gt;make-linux-libre&lt;/code&gt; procedure. The
extra-options keyword works with another function defined right below it:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(define %default-extra-linux-options
`(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
(&quot;CONFIG_DEVPTS_MULTIPLE_INSTANCES&quot; . #t)
;; Modules required for initrd:
(&quot;CONFIG_NET_9P&quot; . m)
(&quot;CONFIG_NET_9P_VIRTIO&quot; . m)
(&quot;CONFIG_VIRTIO_BLK&quot; . m)
(&quot;CONFIG_VIRTIO_NET&quot; . m)
(&quot;CONFIG_VIRTIO_PCI&quot; . m)
(&quot;CONFIG_VIRTIO_BALLOON&quot; . m)
(&quot;CONFIG_VIRTIO_MMIO&quot; . m)
(&quot;CONFIG_FUSE_FS&quot; . m)
(&quot;CONFIG_CIFS&quot; . m)
(&quot;CONFIG_9P_FS&quot; . m)))
(define (config-&amp;gt;string options)
(string-join (map (match-lambda
((option . &#39;m)
(string-append option &quot;=m&quot;))
((option . #t)
(string-append option &quot;=y&quot;))
((option . #f)
(string-append option &quot;=n&quot;)))
options)
&quot;\n&quot;))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And in the custom configure script from the &lt;code&gt;make-linux-libre&lt;/code&gt; package:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;;; Appending works even when the option wasn&#39;t in the
;; file. The last one prevails if duplicated.
(let ((port (open-file &quot;.config&quot; &quot;a&quot;))
(extra-configuration ,(config-&amp;gt;string extra-options)))
(display extra-configuration port)
(close-port port))
(invoke &quot;make&quot; &quot;oldconfig&quot;))))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So by not providing a configuration-file the &lt;code&gt;.config&lt;/code&gt; starts blank, and
then we write into it the collection of flags that we want. Here&#39;s
another custom kernel which I have:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(define %macbook41-full-config
(append %macbook41-config-options
%filesystems
%efi-support
%emulation
(@@ (gnu packages linux) %default-extra-linux-options)))
(define-public linux-libre-macbook41
;; XXX: Access the internal &#39;make-linux-libre&#39; procedure, which is
;; private and unexported, and is liable to change in the future.
((@@ (gnu packages linux) make-linux-libre) (@@ (gnu packages linux) %linux-libre-version)
(@@ (gnu packages linux) %linux-libre-hash)
&#39;(&quot;x86_64-linux&quot;)
#:extra-version &quot;macbook41&quot;
#:patches (@@ (gnu packages linux) %linux-libre-5.1-patches)
#:extra-options %macbook41-config-options))&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;From the above example &lt;code&gt;%filesystems&lt;/code&gt; is a collection of flags I
compiled enabling different filesystem support, &lt;code&gt;%efi-support&lt;/code&gt; enables
EFI support and &lt;code&gt;%emulation&lt;/code&gt; enables my x86_64-linux machine to act in
32-bit mode also. &lt;code&gt;%default-extra-linux-options&lt;/code&gt; are the ones quoted
above, which had to be added in since I replaced them in the
extra-options keyword.&lt;/p&gt;&lt;p&gt;This all sounds like it should be doable, but how does one even know
which modules are required for their system? The two places I found
most helpful to try to answer this question were the &lt;a href=&quot;https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel&quot;&gt;Gentoo
Handbook&lt;/a&gt;,
and the
&lt;a href=&quot;https://www.kernel.org/doc/html/latest/admin-guide/README.html?highlight=localmodconfig&quot;&gt;documentation&lt;/a&gt;
from the kernel itself. From the kernel documentation, it seems that
&lt;code&gt;make localmodconfig&lt;/code&gt; is the command we want.&lt;/p&gt;&lt;p&gt;In order to actually run &lt;code&gt;make localmodconfig&lt;/code&gt; we first need to get and
unpack the kernel source code:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;tar xf $(guix build linux-libre --source)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Once inside the directory containing the source code run &lt;code&gt;touch .config&lt;/code&gt;
to create an initial, empty &lt;code&gt;.config&lt;/code&gt; to start with. &lt;code&gt;make localmodconfig&lt;/code&gt; works by seeing what you already have in &lt;code&gt;.config&lt;/code&gt; and
letting you know what you&#39;re missing. If the file is blank then you&#39;re
missing everything. The next step is to run:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;guix environment linux-libre -- make localmodconfig&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and note the output. Do note that the &lt;code&gt;.config&lt;/code&gt; file is still empty.
The output generally contains two types of warnings. The first start
with &quot;WARNING&quot; and can actually be ignored in our case. The second read:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;module pcspkr did not have configs CONFIG_INPUT_PCSPKR&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For each of these lines, copy the &lt;code&gt;CONFIG_XXXX_XXXX&lt;/code&gt; portion into the
&lt;code&gt;.config&lt;/code&gt; in the directory, and append &lt;code&gt;=m&lt;/code&gt;, so in the end it looks
like this:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;CONFIG_INPUT_PCSPKR=m
CONFIG_VIRTIO=m&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After copying all the configuration options, run &lt;code&gt;make localmodconfig&lt;/code&gt;
again to make sure that you don&#39;t have any output starting with
&quot;module&quot;. After all of these machine specific modules there are a
couple more left that are also needed. &lt;code&gt;CONFIG_MODULES&lt;/code&gt; is necessary so
that you can build and load modules separately and not have everything
built into the kernel. &lt;code&gt;CONFIG_BLK_DEV_SD&lt;/code&gt; is required for reading from
hard drives. It is possible that there are other modules which you
will need.&lt;/p&gt;&lt;p&gt;This post does not aim to be a guide to configuring your own kernel
however, so if you do decide to build a custom kernel you&#39;ll have to
seek out other guides to create a kernel which is just right for your
needs.&lt;/p&gt;&lt;p&gt;The second way to setup the kernel configuration makes more use of
Guix&#39;s features and allows you to share configuration segments between
different kernels. For example, all machines using EFI to boot have a
number of EFI configuration flags that they need. It is likely that all
the kernels will share a list of filesystems to support. By using
variables it is easier to see at a glance what features are enabled and
to make sure you don&#39;t have features in one kernel but missing in another.&lt;/p&gt;&lt;p&gt;Left undiscussed however, is Guix&#39;s initrd and its customization. It is
likely that you&#39;ll need to modify the initrd on a machine using a custom
kernel, since certain modules which are expected to be built may not be
available for inclusion into the initrd.&lt;/p&gt;&lt;p&gt;Suggestions and contributions toward working toward a satisfactory
custom initrd and kernel are welcome!&lt;/p&gt;&lt;h4&gt;About GNU Guix&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/guix&quot;&gt;GNU Guix&lt;/a&gt; is a transactional package
manager and an advanced distribution of the GNU system that &lt;a href=&quot;https://www.gnu.org/distros/free-system-distribution-guidelines.html&quot;&gt;respects
user
freedom&lt;/a&gt;.
Guix can be used on top of any system running the kernel Linux, or it
can be used as a standalone operating system distribution for i686,
x86_64, ARMv7, and AArch64 machines.&lt;/p&gt;&lt;p&gt;In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection. When used as a standalone
GNU/Linux distribution, Guix offers a declarative, stateless approach to
operating system configuration management. Guix is highly customizable
and hackable through &lt;a href=&quot;https://www.gnu.org/software/guile&quot;&gt;Guile&lt;/a&gt;
programming interfaces and extensions to the
&lt;a href=&quot;http://schemers.org&quot;&gt;Scheme&lt;/a&gt; language.&lt;/p&gt;</content:encoded>
<dc:date>2019-05-21T10:00:00+00:00</dc:date>
<dc:creator>Efraim Flashner</dc:creator>
</item>
<item rdf:about="https://gnu.org/software/guix/blog/2019/gnu-guix-1.0.1-released/">
<title>GNU Guix: GNU Guix 1.0.1 released</title>
<link>https://gnu.org/software/guix/blog/2019/gnu-guix-1.0.1-released/</link>
<content:encoded>&lt;p&gt;We are pleased to announce the release of GNU Guix version 1.0.1. This
new version fixes bugs in the &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html&quot;&gt;graphical
installer&lt;/a&gt;
for the standalone Guix System.&lt;/p&gt;&lt;p&gt;The release comes with &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/System-Installation.html&quot;&gt;ISO-9660 installation
images&lt;/a&gt;,
a &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Running-Guix-in-a-VM.html&quot;&gt;virtual machine
image&lt;/a&gt;,
and with tarballs to install the package manager on top of your
GNU/Linux distro, either &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Requirements.html&quot;&gt;from
source&lt;/a&gt;
or &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Binary-Installation.html&quot;&gt;from
binaries&lt;/a&gt;.
Guix users can update by running &lt;code&gt;guix pull&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;Its been just over two weeks since we &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/&quot;&gt;announced
1.0.0&lt;/a&gt;—two
weeks and 706 commits by 40 people already!&lt;/p&gt;&lt;p&gt;This is primarily a bug-fix release, specifically focusing on issues in
the graphical installer for the standalone system:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The most &lt;a href=&quot;https://issues.guix.gnu.org/issue/35541&quot;&gt;embarrassing bug&lt;/a&gt;
would lead the graphical installer to produce a configuration where
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html#index-_0025base_002dpackages&quot;&gt;&lt;code&gt;%base-packages&lt;/code&gt;&lt;/a&gt;
was omitted from the &lt;code&gt;packages&lt;/code&gt; field. Consequently, the freshly
installed system would not have the usual commands in &lt;code&gt;$PATH&lt;/code&gt;&lt;code&gt;ls&lt;/code&gt;,
&lt;code&gt;ps&lt;/code&gt;, etc.—and Xfce would fail to start for that reason. See below
for a “post-mortem” analysis.&lt;/li&gt;&lt;li&gt;The &lt;code&gt;wpa-supplicant&lt;/code&gt; service would &lt;a href=&quot;https://issues.guix.gnu.org/issue/35550&quot;&gt;sometimes fail to
start&lt;/a&gt; in the installation
image, thereby breaking network access; this is now fixed.&lt;/li&gt;&lt;li&gt;The installer &lt;a href=&quot;https://issues.guix.gnu.org/issue/35540&quot;&gt;now&lt;/a&gt; allows
you to toggle the visibility of passwords and passphrases, and it &lt;a href=&quot;https://issues.guix.gnu.org/issue/35716&quot;&gt;no
longer&lt;/a&gt; restricts their
length.&lt;/li&gt;&lt;li&gt;The installer &lt;a href=&quot;https://issues.guix.gnu.org/issue/35657&quot;&gt;can now
create&lt;/a&gt; Btrfs file
systems.&lt;/li&gt;&lt;li&gt;&lt;code&gt;network-manager-applet&lt;/code&gt; is &lt;a href=&quot;https://issues.guix.gnu.org/35554&quot;&gt;now&lt;/a&gt;
part of
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Desktop-Services.html#index-_0025desktop_002dservices&quot;&gt;&lt;code&gt;%desktop-services&lt;/code&gt;&lt;/a&gt;,
and thus readily usable not just from GNOME but also from Xfce.&lt;/li&gt;&lt;li&gt;The
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/NEWS?h=version-1.0.1&quot;&gt;&lt;code&gt;NEWS&lt;/code&gt;&lt;/a&gt;
file has more details, but there were also minor bug fixes for
&lt;a href=&quot;https://issues.guix.gnu.org/issue/35618&quot;&gt;&lt;code&gt;guix environment&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://issues.guix.gnu.org/issue/35588&quot;&gt;&lt;code&gt;guix search&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://issues.guix.gnu.org/issue/35684&quot;&gt;&lt;code&gt;guix refresh&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A couple of new features were reviewed in time to make it into 1.0.1:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html&quot;&gt;&lt;code&gt;guix system docker-image&lt;/code&gt;&lt;/a&gt;
now produces an OS image with an “entry point”, which makes it
easier to use than before.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html&quot;&gt;&lt;code&gt;guix system container&lt;/code&gt;&lt;/a&gt;
has a new &lt;code&gt;--network&lt;/code&gt; option, allowing the container to share
networking access with the host.&lt;/li&gt;&lt;li&gt;70 new packages were added and 483 packages were updated.&lt;/li&gt;&lt;li&gt;Translations were updated as usual and we are glad to announce a
20%-complete &lt;a href=&quot;https://www.gnu.org/software/guix/manual/ru/html_node&quot;&gt;Russian translation of the
manual&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Recap of &lt;a href=&quot;https://issues.guix.gnu.org/issue/35541&quot;&gt;bug #35541&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;The 1.0.1 release was primarily motivated by &lt;a href=&quot;https://issues.guix.gnu.org/issue/35541&quot;&gt;bug
#35541&lt;/a&gt;, which was reported
shortly after the 1.0.0 release. If you installed Guix System with the
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html&quot;&gt;graphical
installer&lt;/a&gt;,
chances are that, because of this bug, you ended up with a system where
all the usual GNU/Linux commands—&lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;ps&lt;/code&gt;, etc.—were &lt;em&gt;not&lt;/em&gt; in
&lt;code&gt;$PATH&lt;/code&gt;. That in turn would also prevent Xfce from starting, if you
chose that desktop environment for your system.&lt;/p&gt;&lt;p&gt;We quickly published a note in the &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html&quot;&gt;system installation
instructions&lt;/a&gt;
explaining how to work around the issue:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;First, install packages that provide those commands, along with the
text editor of your choice (for example, &lt;code&gt;emacs&lt;/code&gt; or &lt;code&gt;vim&lt;/code&gt;):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;guix install coreutils findutils grep procps sed emacs vim&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;At this point, the essential commands you would expect are
available. Open your configuration file with your editor of choice,
for example &lt;code&gt;emacs&lt;/code&gt;, running as root:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo emacs /etc/config.scm&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Change the &lt;code&gt;packages&lt;/code&gt; field to add the “base packages” to the list of
globally-installed packages, such that your configuration looks like
this:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(operating-system
;; … snip …
(packages (append (list (specification-&amp;gt;package &quot;nss-certs&quot;))
%base-packages))
;; … snip …
)&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Reconfigure the system so that your new configuration is in effect:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;guix pull &amp;amp;&amp;amp; sudo guix system reconfigure /etc/config.scm&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you already installed 1.0.0, you can perform the steps above to get
all these core commands back.&lt;/p&gt;&lt;p&gt;Guix is &lt;em&gt;purely declarative&lt;/em&gt;: if you give it &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html&quot;&gt;an operating system
definition&lt;/a&gt;
where the “base packages” are not &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html#Globally_002dVisible-Packages&quot;&gt;available
system-wide&lt;/a&gt;,
then it goes ahead and installs precisely that. Thats exactly what
happened with this bug: the installer generated such a configuration and
passed it to &lt;code&gt;guix system init&lt;/code&gt; as part of the installation process.&lt;/p&gt;&lt;h1&gt;Lessons learned&lt;/h1&gt;&lt;p&gt;Technically, this is a “trivial” bug: its fixed by adding one line to
your operating system configuration and reconfiguring, and the fix for
the installer itself &lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=ecb0df6817eb3767e6b4dcf1945f3c2dfbe3b44f&quot;&gt;is also a
one-liner&lt;/a&gt;.
Nevertheless, its obviously a serious bug for the impression it
gives—this is &lt;em&gt;not&lt;/em&gt; the user experience we want to offer. So how did such
a serious bug go through unnoticed?&lt;/p&gt;&lt;p&gt;For several years now, Guix has had a number of automated &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2016/guixsd-system-tests/&quot;&gt;&lt;em&gt;system
tests&lt;/em&gt;&lt;/a&gt;
running in virtual machines (VMs). These tests primarily ensure that
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Services.html&quot;&gt;system
services&lt;/a&gt;
work as expected, but some of them &lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/tests/install.scm&quot;&gt;specifically test system
installation&lt;/a&gt;:
installing to a RAID or encrypted device, with a separate &lt;code&gt;/home&lt;/code&gt;, using
Btrfs, etc. These tests even run on our &lt;a href=&quot;https://ci.guix.gnu.org/jobset/guix-master&quot;&gt;continuous integration
service&lt;/a&gt; (search for the
“tests.*” jobs there).&lt;/p&gt;&lt;p&gt;Unfortunately, those installation tests target the so-called &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Manual-Installation.html&quot;&gt;“manual”
installation
process&lt;/a&gt;,
which is scriptable. They do &lt;em&gt;not&lt;/em&gt; test the installers graphical user
interface. Consequently, testing the user interface (UI) itself was a
manual process. Our attention was, presumably, focusing more on UI
aspects since—so we thought—the actual installation tests were already
taken care of by the system tests. That the generated system
configuration could be syntactically correct but definitely wrong from a
usability viewpoint perhaps didnt occur to us. The end result is that
the issue went unnoticed.&lt;/p&gt;&lt;p&gt;The lesson here is that: manual testing should &lt;em&gt;also&lt;/em&gt; look for issues in
“unexpected places”, and more importantly, we need automated tests for
the graphical UI. The Debian and Guix installer UIs are similar—both
using the &lt;a href=&quot;https://pagure.io/newt&quot;&gt;Newt&lt;/a&gt; toolkit. Debian tests its
installer using
&lt;a href=&quot;https://wiki.debian.org/DebianInstaller/Preseed&quot;&gt;“pre-seeds”&lt;/a&gt;
(&lt;a href=&quot;https://salsa.debian.org/installer-team/preseed&quot;&gt;code&lt;/a&gt;), which are
essentially answers to all the questions and choices the UI would
present. We could adopt a similar approach, or we could test the UI
itself at a lower level—reading the screen, and simulating key strokes.
UI testing is notoriously tricky so well have to figure out how to get
there.&lt;/p&gt;&lt;h1&gt;Conclusion&lt;/h1&gt;&lt;p&gt;Our 1.0 party was a bit spoiled by this bug, and we are sorry that
installation was disappointing to those of you who tried 1.0. We hope
1.0.1 will allow you to try and see what declarative and programmable
system configuration management is like, because thats where the real
value of Guix System is—the graphical installer is icing on the cake.&lt;/p&gt;&lt;p&gt;Join us &lt;a href=&quot;https://www.gnu.org/software/guix/contact/&quot;&gt;on &lt;code&gt;#guix&lt;/code&gt; and on the mailing
lists&lt;/a&gt;!&lt;/p&gt;&lt;h4&gt;About GNU Guix&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/guix&quot;&gt;GNU Guix&lt;/a&gt; is a transactional package
manager and an advanced distribution of the GNU system that &lt;a href=&quot;https://www.gnu.org/distros/free-system-distribution-guidelines.html&quot;&gt;respects
user
freedom&lt;/a&gt;.
Guix can be used on top of any system running the kernel Linux, or it
can be used as a standalone operating system distribution for i686,
x86_64, ARMv7, and AArch64 machines.&lt;/p&gt;&lt;p&gt;In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection. When used as a standalone
GNU/Linux distribution, Guix offers a declarative, stateless approach to
operating system configuration management. Guix is highly customizable
and hackable through &lt;a href=&quot;https://www.gnu.org/software/guile&quot;&gt;Guile&lt;/a&gt;
programming interfaces and extensions to the
&lt;a href=&quot;http://schemers.org&quot;&gt;Scheme&lt;/a&gt; language.&lt;/p&gt;</content:encoded>
<dc:date>2019-05-19T21:30:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9433">
<title>bison @ Savannah: Bison 3.4 released [stable]</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9433</link>
<content:encoded>&lt;p&gt;We are happy to announce the release of Bison 3.4.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;A particular focus was put on improving the diagnostics, which are now
&lt;br /&gt;
colored by default, and accurate with multibyte input. Their format was
&lt;br /&gt;
also changed, and is now similar to GCC 9&#39;s diagnostics.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Users of the default backend (yacc.c) can use the new %define variable
&lt;br /&gt;
api.header.include to avoid duplicating the content of the generated header
&lt;br /&gt;
in the generated parser. There are two new examples installed, including a
&lt;br /&gt;
reentrant calculator which supports recursive calls to the parser and
&lt;br /&gt;
Flex-generated scanner.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;See below for more details.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;==================================================================
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Bison is a general-purpose parser generator that converts an annotated
&lt;br /&gt;
context-free grammar into a deterministic LR or generalized LR (GLR) parser
&lt;br /&gt;
employing LALR(1) parser tables. Bison can also generate IELR(1) or
&lt;br /&gt;
canonical LR(1) parser tables. Once you are proficient with Bison, you can
&lt;br /&gt;
use it to develop a wide range of language parsers, from those used in
&lt;br /&gt;
simple desk calculators to complex programming languages.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Bison is upward compatible with Yacc: all properly-written Yacc grammars
&lt;br /&gt;
work with Bison with no change. Anyone familiar with Yacc should be able to
&lt;br /&gt;
use Bison with little trouble. You need to be fluent in C, C++ or Java
&lt;br /&gt;
programming in order to use Bison.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here is the GNU Bison home page:
&lt;br /&gt;
&lt;a href=&quot;https://gnu.org/software/bison/&quot;&gt;https://gnu.org/software/bison/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;==================================================================
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here are the compressed sources:
&lt;br /&gt;
&lt;a href=&quot;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.gz&quot;&gt;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.gz&lt;/a&gt; (4.1MB)
&lt;br /&gt;
&lt;a href=&quot;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.xz&quot;&gt;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.xz&lt;/a&gt; (3.1MB)
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Here are the GPG detached signatures[*]:
&lt;br /&gt;
&lt;a href=&quot;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.gz.sig&quot;&gt;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.gz.sig&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.xz.sig&quot;&gt;https://ftp.gnu.org/gnu/bison/bison-3.4.tar.xz.sig&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Use a mirror for higher download bandwidth:
&lt;br /&gt;
&lt;a href=&quot;https://www.gnu.org/order/ftp.html&quot;&gt;https://www.gnu.org/order/ftp.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;[*] Use a .sig file to verify that the corresponding file (without the
&lt;br /&gt;
.sig suffix) is intact. First, be sure to download both the .sig file
&lt;br /&gt;
and the corresponding tarball. Then, run a command like this:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; gpg --verify bison-3.4.tar.gz.sig
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If that command fails because you don&#39;t have the required public key,
&lt;br /&gt;
then run this command to import it:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; gpg --keyserver keys.gnupg.net --recv-keys 0DDCAA3278D5264E
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;and rerun the &#39;gpg --verify&#39; command.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This release was bootstrapped with the following tools:
&lt;br /&gt;
Autoconf 2.69
&lt;br /&gt;
Automake 1.16.1
&lt;br /&gt;
Flex 2.6.4
&lt;br /&gt;
Gettext 0.19.8.1
&lt;br /&gt;
Gnulib v0.1-2563-gd654989d8
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;==================================================================
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;NEWS
&lt;br /&gt;
&lt;/p&gt;
&lt;textarea class=&quot;verbatim&quot; cols=&quot;80&quot; readonly=&quot;readonly&quot; rows=&quot;20&quot;&gt;* Noteworthy changes in release 3.4 (2019-05-19) [stable]
** Deprecated features
The %pure-parser directive is deprecated in favor of &#39;%define api.pure&#39;
since Bison 2.3b (2008-05-27), but no warning was issued; there is one
now. Note that since Bison 2.7 you are strongly encouraged to use
&#39;%define api.pure full&#39; instead of &#39;%define api.pure&#39;.
** New features
*** Colored diagnostics
As an experimental feature, diagnostics are now colored, controlled by the
new options --color and --style.
To use them, install the libtextstyle library before configuring Bison.
It is available from
https://alpha.gnu.org/gnu/gettext/
for instance
https://alpha.gnu.org/gnu/gettext/libtextstyle-0.8.tar.gz
The option --color supports the following arguments:
- always, yes: Enable colors.
- never, no: Disable colors.
- auto, tty (default): Enable colors if the output device is a tty.
To customize the styles, create a CSS file similar to
/* bison-bw.css */
.warning { }
.error { font-weight: 800; text-decoration: underline; }
.note { }
then invoke bison with --style=bison-bw.css, or set the BISON_STYLE
environment variable to &quot;bison-bw.css&quot;.
*** Disabling output
When given -fsyntax-only, the diagnostics are reported, but no output is
generated.
The name of this option is somewhat misleading as bison does more than
just checking the syntax: every stage is run (including checking for
conflicts for instance), except the generation of the output files.
*** Include the generated header (yacc.c)
Before, when --defines is used, bison generated a header, and pasted an
exact copy of it into the generated parser implementation file. If the
header name is not &quot;y.tab.h&quot;, it is now #included instead of being
duplicated.
To use an &#39;#include&#39; even if the header name is &quot;y.tab.h&quot; (which is what
happens with --yacc, or when using the Autotools&#39; ylwrap), define
api.header.include to the exact argument to pass to #include. For
instance:
%define api.header.include {&quot;parse.h&quot;}
or
%define api.header.include {&amp;lt;parser/parse.h&amp;gt;}
*** api.location.type is now supported in C (yacc.c, glr.c)
The %define variable api.location.type defines the name of the type to use
for locations. When defined, Bison no longer defines YYLTYPE.
This can be used in programs with several parsers to factor their
definition of locations: let one of them generate them, and the others
just use them.
** Changes
*** Graphviz output
In conformance with the recommendations of the Graphviz team, if %require
&quot;3.4&quot; (or better) is specified, the option --graph generates a *.gv file
by default, instead of *.dot.
*** Diagnostics overhaul
Column numbers were wrong with multibyte characters, which would also
result in skewed diagnostics with carets. Beside, because we were
indenting the quoted source with a single space, lines with tab characters
were incorrectly underlined.
To address these issues, and to be clearer, Bison now issues diagnostics
as GCC9 does. For instance it used to display (there&#39;s a tab before the
opening brace):
foo.y:3.37-38: error: $2 of expr has no declared type
expr: expr &#39;+&#39; &quot;number&quot; { $$ = $1 + $2; }
^~
It now reports
foo.y:3.37-38: error: $2 of expr has no declared type
3 | expr: expr &#39;+&#39; &quot;number&quot; { $$ = $1 + $2; }
| ^~
Other constructs now also have better locations, resulting in more precise
diagnostics.
*** Fix-it hints for %empty
Running Bison with -Wempty-rules and --update will remove incorrect %empty
annotations, and add the missing ones.
*** Generated reports
The format of the reports (parse.output) was improved for readability.
*** Better support for --no-line.
When --no-line is used, the generated files are now cleaner: no lines are
generated instead of empty lines. Together with using api.header.include,
that should help people saving the generated files into version control
systems get smaller diffs.
** Documentation
A new example in C shows an simple infix calculator with a hand-written
scanner (examples/c/calc).
A new example in C shows a reentrant parser (capable of recursive calls)
built with Flex and Bison (examples/c/reccalc).
There is a new section about the history of Yaccs and Bison.
** Bug fixes
A few obscure bugs were fixed, including the second oldest (known) bug in
Bison: it was there when Bison was entered in the RCS version control
system, in December 1987. See the NEWS of Bison 3.3 for the previous
oldest bug.
&lt;/textarea&gt;</content:encoded>
<dc:date>2019-05-19T10:01:36+00:00</dc:date>
<dc:creator>Akim Demaille</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/news/six-more-devices-from-thinkpenguin-inc-now-fsf-certified-to-respect-your-freedom">
<title>FSF News: Six more devices from ThinkPenguin, Inc. now FSF-certified to Respect Your Freedom</title>
<link>http://www.fsf.org/news/six-more-devices-from-thinkpenguin-inc-now-fsf-certified-to-respect-your-freedom</link>
<content:encoded>&lt;p&gt;This is ThinkPenguin&#39;s second batch of devices to receive &lt;a href=&quot;https://www.fsf.org/ryf&quot;&gt;RYF
certification&lt;/a&gt; this spring. The &lt;a href=&quot;https://www.fsf.org/news/seven-new-devices-from-thinkpenguin-inc-now-fsf-certified-to-respect-your-freedom&quot;&gt;FSF announced certification&lt;/a&gt; of
seven other devices from ThinkPenguin on March 21st. This latest
collection of devices makes ThinkPenguin the retailer with the largest
catalog of RYF-certified devices.&lt;/p&gt;
&lt;p&gt;&quot;It&#39;s unfortunate that so many of even the simplest devices out there
have surprise proprietary software requirements. RYF is an antidote
for that. It connects ethical shoppers concerned about their freedom
with companies offering options respecting that freedom,&quot; said the
FSF&#39;s executive director, John Sullivan.&lt;/p&gt;
&lt;p&gt;Today&#39;s certifications expands the availability of RYF-certified
peripheral devices. The &lt;a href=&quot;https://www.thinkpenguin.com/gnu-linux/penguin-usb-20-external-stereo-sound-adapter-gnu-linux-tpe-usbsound&quot;&gt;Penguin USB 2.0 External USB Stereo Sound
Adapter&lt;/a&gt; and the &lt;a href=&quot;https://www.thinkpenguin.com/gnu-linux/51-channels-24-bit-96khz-pci-express-audio-sound-card-w-full-low-profile-bracket-tpe-pcies&quot;&gt;5.1 Channels 24-bit 96KHz PCI Express Audio Sound
Card&lt;/a&gt; help users get the most of their computers in terms of sound
quality. For wireless connectivity, ThinkPenguin offers the &lt;a href=&quot;https://www.thinkpenguin.com/gnu-linux/wireless-n-pci-express-dual-band-mini-half-height-card-w-full-height-bracket-option-tpe-nh&quot;&gt;Wireless
N PCI Express Dual-Band Mini Half-Height Card&lt;/a&gt; and &lt;a href=&quot;https://www.thinkpenguin.com/gnu-linux/penguin-wireless-n-mini-pcie&quot;&gt;Penguin
Wireless N Mini PCIe Card&lt;/a&gt;. For users with an older printer, the
&lt;a href=&quot;https://www.thinkpenguin.com/gnu-linux/usb-parallel-printer-cable-tpe-usbparal&quot;&gt;USB to Parallel Printer Cable&lt;/a&gt; can let them continue to use it
with their more current hardware. Finally, the &lt;a href=&quot;https://www.thinkpenguin.com/gnu-linux/pcie-esata-sata-6gbps-controller-card-w-full-lowprofile-brackets-tpe-pciesata&quot;&gt;PCIe eSATA / SATA
6Gbps Controller Card&lt;/a&gt; help users to connect to external eSATA
devices as well as internal SATA.&lt;/p&gt;
&lt;p&gt;&quot;I&#39;ve spent the last 14 years working on projects aimed at making free
software adoption easy for everyone, but the single greatest obstacle
over the past 20 years has not been software. It&#39;s been hardware. The
RYF program helps solve this problem by linking users to trustworthy
sources where they can get hardware guaranteed to work on GNU/Linux,
and be properly supported using free software,&quot; said Christopher Waid,
founder and CEO of ThinkPenguin.&lt;/p&gt;
&lt;p&gt;While ThinkPenguin has consistently sought certification since the
inception of the RYF program -- gaining their &lt;a href=&quot;https://www.fsf.org/news/ryf-certification-thinkpenguin-usb-with-atheros-chip&quot;&gt;first&lt;/a&gt; certification
in 2013, and adding several more over the years since -- the pace at
which they are gaining certifications now eclipses all past efforts.&lt;/p&gt;
&lt;p&gt;&quot;ThinkPenguin continues to impress with the rapid expansion of their
catalog of RYF-certified devices. Adding 14 new devices in a little
over a month shows their dedication to the RYF certification program
and the protection of users it represents,&quot; said the FSF&#39;s licensing
and compliance manager, Donald Robertson, III.&lt;/p&gt;
&lt;p&gt;To learn more about the Respects Your Freedom certification program,
including details on the certification of these ThinkPenguin devices,
please visit &lt;a href=&quot;https://fsf.org/ryf&quot;&gt;https://fsf.org/ryf&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Retailers interested in applying for certification can consult
&lt;a href=&quot;https://www.fsf.org/resources/hw/endorsement/criteria&quot;&gt;https://www.fsf.org/resources/hw/endorsement/criteria&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;About the Free Software Foundation&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://fsf.org&quot;&gt;Free Software Foundation&lt;/a&gt;, founded in 1985, is dedicated to
promoting computer users&#39; right to use, study, copy, modify, and
redistribute computer programs. The FSF promotes the development and
use of free (as in freedom) software -- particularly the GNU operating
system and its GNU/Linux variants -- and free documentation for free
software. The FSF also helps to spread awareness of the ethical and
political issues of freedom in the use of software, and its Web sites,
located at &lt;a href=&quot;https://fsf.org&quot;&gt;https://fsf.org&lt;/a&gt; and &lt;a href=&quot;https://gnu.org&quot;&gt;https://gnu.org&lt;/a&gt;, are an important
source of information about GNU/Linux. Donations to support the FSF&#39;s
work can be made at &lt;a href=&quot;https://donate.fsf.org&quot;&gt;https://donate.fsf.org&lt;/a&gt;. Its headquarters are in
Boston, MA, USA.&lt;/p&gt;
&lt;p&gt;More information about the FSF, as well as important information for
journalists and publishers, is at &lt;a href=&quot;https://www.fsf.org/press&quot;&gt;https://www.fsf.org/press&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;About ThinkPenguin, Inc.&lt;/h3&gt;
&lt;p&gt;Started by Christopher Waid, founder and CEO, ThinkPenguin, Inc., is a
consumer-driven company with a mission to bring free software to the
masses. At the core of the company is a catalog of computers and
accessories with broad support for GNU/Linux. The company provides
technical support for end-users and works with the community,
distributions, and upstream projects to make GNU/Linux all that it can
be.&lt;/p&gt;
&lt;h3&gt;Media Contacts&lt;/h3&gt;
&lt;p&gt;Donald Robertson, III &lt;br /&gt;
Licensing and Compliance Manager &lt;br /&gt;
Free Software Foundation&lt;br /&gt;
+1 (617) 542 5942&lt;br /&gt;
&lt;a href=&quot;mailto:licensing@fsf.org&quot;&gt;licensing@fsf.org&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;ThinkPenguin, Inc. &lt;br /&gt;
+1 (888) 39 THINK (84465) x703 &lt;br /&gt;
&lt;a href=&quot;mailto:media@thinkpenguin.com&quot;&gt;media@thinkpenguin.com&lt;/a&gt; &lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-05-16T17:44:36+00:00</dc:date>
<dc:creator>FSF News</dc:creator>
</item>
<item rdf:about="https://gnunet.org/#gnunet-0.11.4-release">
<title>GNUnet News: 2019-05-12: GNUnet 0.11.4 released</title>
<link>https://gnunet.org/#gnunet-0.11.4-release</link>
<content:encoded>&lt;h3&gt;
&lt;a name=&quot;gnunet-0.11.4-release&quot;&gt;2019-05-12: GNUnet 0.11.4 released&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;
We are pleased to announce the release of GNUnet 0.11.4.
&lt;/p&gt;
&lt;p&gt;
This is a bugfix release for 0.11.3, mostly fixing minor bugs,
improving documentation and fixing various build issues. In
terms of usability, users should be aware that there are still a large
number of known open issues in particular with respect to ease of use,
but also some critical privacy issues especially for mobile users.
Also, the nascent network is tiny (about 200 peers) and thus unlikely to
provide good anonymity or extensive amounts of interesting
information. As a result, the 0.11.4 release is still only suitable
for early adopters with some reasonable pain tolerance.
&lt;/p&gt;
&lt;h4&gt;Download links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.4.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.4.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.4.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.4.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
(gnunet-gtk and gnunet-fuse were not released again, as there were no
changes and the 0.11.0 versions are expected to continue to work fine
with gnunet-0.11.4.)
&lt;/p&gt;
&lt;p&gt;
Note that due to mirror synchronization, not all links might be functional
early after the release. For direct access try &lt;a href=&quot;http://ftp.gnu.org/gnu/gnunet/&quot;&gt;http://ftp.gnu.org/gnu/gnunet/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Note that GNUnet is now started using &lt;tt&gt;gnunet-arm -s&lt;/tt&gt;. GNUnet should be
stopped using &lt;tt&gt;gnunet-arm -e&lt;/tt&gt;.
&lt;/p&gt;
&lt;h4&gt;Noteworthy changes in 0.11.4&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;gnunet-arm -s no longer logs into the console by default and
instead into a logfile (in $GNUNET_HOME). &lt;/li&gt;
&lt;li&gt;The reclaim subsystem is no longer experimental.
Further, the internal encryption scheme moved from ABE to GNS-style
encryption. &lt;/li&gt;
&lt;li&gt;GNUnet now depends on a more recent version of libmicrohttpd. &lt;/li&gt;
&lt;li&gt;The REST API now includes read-only access to the configuration. &lt;/li&gt;
&lt;li&gt;All manpages are now in mdoc format. &lt;/li&gt;
&lt;li&gt;gnunet-download-manager.scm removed. &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Known Issues&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;There are known major design issues in the TRANSPORT, ATS and CORE subsystems
which will need to be addressed in the future to achieve acceptable usability,
performance and security.&lt;/li&gt;
&lt;li&gt;There are known moderate implementation limitations in CADET that
negatively impact performance. Also CADET may unexpectedly deliver messages out-of-order.&lt;/li&gt;
&lt;li&gt;There are known moderate design issues in FS that also impact
usability and performance.&lt;/li&gt;
&lt;li&gt;There are minor implementation limitations in SET that create
unnecessary attack surface for availability.&lt;/li&gt;
&lt;li&gt;The RPS subsystem remains experimental.&lt;/li&gt;
&lt;li&gt;Some high-level tests in the test-suite fail non-deterministically due to
the low-level TRANSPORT issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In addition to this list, you may also want to consult our bug tracker
at &lt;a href=&quot;https://bugs.gnunet.org/&quot;&gt;bugs.gnunet.org&lt;/a&gt; which lists
about 190 more specific issues.
&lt;/p&gt;
&lt;h4&gt;Thanks&lt;/h4&gt;
&lt;p&gt;
This release was the work of many people. The following people
contributed code and were thus easily identified:
ng0, Christian Grothoff, Hartmut Goebel, Martin Schanzenbach, Devan Carpenter, Naomi Phillips and Julius Bünger.
&lt;/p&gt;</content:encoded>
<dc:date>2019-05-12T17:40:00+00:00</dc:date>
<dc:creator>GNUnet News</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9432">
<title>unifont @ Savannah: Unifont 12.1.01 Released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9432</link>
<content:encoded>&lt;p&gt;&lt;strong&gt;11 May 2019&lt;/strong&gt; Unifont 12.1.01 is now available. Significant changes in this version include the &lt;strong&gt;Reiwa Japanese era glyph&lt;/strong&gt; (U+32FF), which was the only addition made in the Unicode 12.1.0 release of 7 May 2019; Rebecca Bettencourt has contributed many Under ConScript Uniocde Registry (UCSUR) scripts; and David Corbett and Johnnie Weaver modified glyphs in two Plane 1 scripts. Full details are in the ChangeLog file.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Download this release at:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ftpmirror.gnu.org/unifont/unifont-12.1.01/&quot;&gt;https://ftpmirror.gnu.org/unifont/unifont-12.1.01/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;or if that fails,
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ftp.gnu.org/gnu/unifont/unifont-12.1.01/&quot;&gt;https://ftp.gnu.org/gnu/unifont/unifont-12.1.01/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;or, as a last resort,
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/unifont/unifont-12.1.01/&quot;&gt;ftp://ftp.gnu.org/gnu/unifont/unifont-12.1.01/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-05-11T20:59:48+00:00</dc:date>
<dc:creator>Paul Hardy</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9431">
<title>remotecontrol @ Savannah: Nest, the company, died at Google I/O 2019</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9431</link>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://arstechnica.com/gadgets/2019/05/nest-the-company-died-at-google-io-2019/&quot;&gt;https://arstechnica.com/gadgets/2019/05/nest-the-company-died-at-google-io-2019/&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-05-11T11:39:18+00:00</dc:date>
<dc:creator>Stephen H. Dawson DSL</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9430">
<title>gettext @ Savannah: GNU gettext 0.20 released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9430</link>
<content:encoded>&lt;p&gt;Download from &lt;a href=&quot;https://ftp.gnu.org/pub/gnu/gettext/gettext-0.20.tar.gz&quot;&gt;https://ftp.gnu.org/pub/gnu/gettext/gettext-0.20.tar.gz&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;New in this release:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for reproducible builds:
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; - msgfmt now eliminates the POT-Creation-Date header field from .mo files.
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements for translators:
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; - update-po target in Makefile.in.in now uses msgmerge --previous.
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements for maintainers:
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; - msgmerge now has an option --for-msgfmt, that produces a PO file meant for use by msgfmt only. This option saves processing time, in particular by omitting fuzzy matching that is not useful in this situation.
&lt;br /&gt;
- The .pot file in a &#39;po&#39; directory is now erased by &quot;make maintainer-clean&quot;.
&lt;br /&gt;
- It is now possible to override xgettext options from the po/Makefile.in.in through options in XGETTEXT_OPTIONS (declared in po/Makevars).
&lt;br /&gt;
- The --intl option of the gettextize program (deprecated since 2010) is no longer available. Instead of including the intl sources in your package, we suggest making the libintl library an optional prerequisite of your package. This will simplify the build system of your package.
&lt;br /&gt;
- Accordingly, the Autoconf macro AM_GNU_GETTEXT_INTL_SUBDIR is gone as well.
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programming languages support:
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; - C, C++:
&lt;br /&gt;
xgettext now supports strings in u8&quot;...&quot; syntax, as specified in C11 and C++11.
&lt;br /&gt;
- C, C++:
&lt;br /&gt;
xgettext now supports &#39;p&#39;/&#39;P&#39; exponent markers in number tokens, as specified in C99 and C++17.
&lt;br /&gt;
- C++:
&lt;br /&gt;
xgettext now supports underscores in number tokens.
&lt;br /&gt;
- C++:
&lt;br /&gt;
xgettext now supports single-quotes in number tokens, as specified in C++14.
&lt;br /&gt;
- Shell:
&lt;br /&gt;
o The programs &#39;gettext&#39;, &#39;ngettext&#39; now support a --context argument.
&lt;br /&gt;
o gettext.sh contains new function eval_pgettext and eval_npgettext for producing translations of messages with context.
&lt;br /&gt;
- Java:
&lt;br /&gt;
o xgettext now supports UTF-8 encoded .properties files (a new feature of Java 9).
&lt;br /&gt;
o The build system and tools now support Java 9, 10, and 11. On the other hand, support for old versions of Java (Java 5 and older, GCJ 4.2.x and older) has been dropped.
&lt;br /&gt;
- Perl:
&lt;br /&gt;
o Native support for context functions (pgettext, dpgettext, dcpgettext, npgettext, dnpgettext, dcnpgettext).
&lt;br /&gt;
o better detection of question mark and slash as operators (as opposed to regular expression delimiters).
&lt;br /&gt;
- Scheme:
&lt;br /&gt;
xgettext now parses the syntax for specialized byte vectors (#u8(...), #vu8(...), etc.) correctly.
&lt;br /&gt;
- Pascal:
&lt;br /&gt;
xgettext can now extract strings from .rsj files, produced by the Free Pascal compiler version 3.0.0 or newer.
&lt;br /&gt;
- Vala:
&lt;br /&gt;
xgettext now parses escape sequences in strings more accurately.
&lt;br /&gt;
- JavaScript:
&lt;br /&gt;
xgettext now parses template literals correctly.
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Runtime behaviour:
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; - The interpretation of the language preferences on macOS has been fixed.
&lt;br /&gt;
- Per-thread locales are now also supported on Solaris 11.4.
&lt;br /&gt;
- The replacements for the printf()/fprintf()/... functions that are provided through &amp;lt;libintl.h&amp;gt; on native Windows and NetBSD are now POSIX compliant. There is no conflict any more between these replacements and other possible replacements provided by gnulib or mingw.
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Libtextstyle:
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; - This package installs a new library &#39;libtextstyle&#39;, together with a new header file &amp;lt;textstyle.h&amp;gt;. It is a library for styling text output sent to a console or terminal emulator. Packagers: please see the suggested packaging hints in the file PACKAGING.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-05-09T02:15:21+00:00</dc:date>
<dc:creator>Bruno Haible</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9429">
<title>cssc @ Savannah: CSSC-1.4.1 released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9429</link>
<content:encoded>&lt;textarea class=&quot;verbatim&quot; cols=&quot;80&quot; readonly=&quot;readonly&quot; rows=&quot;20&quot;&gt;I&#39;m pleased to announce the release of GNU CSSC, version
1.4.1. This is a stable release. The previous stable
release was 1.4.0.
Stable releases of CSSC are available from
https://ftp.gnu.org/gnu/cssc/. Development releases and
release candidates are available from
https://alpha.gnu.org/gnu/cssc/.
CSSC (&quot;Compatibly Stupid Source Control&quot;) is the GNU
project&#39;s replacement for the traditional Unix SCCS suite.
It aims for full compatibility, including precise nuances
of behaviour, support for all command-line options, and in
most cases bug-for-bug compatibility. CSSC comes with an
extensive automated test suite.
If you are currently using SCCS to do version control of
software, you should be able to just drop in CSSC, even for
example if you have a large number of shell scripts which
are layered on top of SCCS and depend on it. This should
allow you to develop on and for the GNU/Linux platform if
your source code exists only in an SCCS repository. CSSC
also allows you to migrate to a more modern version control
system (such as git).
There is a mailing list for users of the CSSC suite. To
join it, please send email to &amp;lt;cssc-users-request@gnu.org&amp;gt;
or visit the URL
http://lists.gnu.org/mailman/listinfo/cssc-users.
There is also a mailing list for (usually automated) mails
about bugs and changes to CSSC. This is
http://lists.gnu.org/mailman/listinfo/bug-cssc.
For more information about CSSC, please see
http://www.gnu.org/software/cssc/.
These people have contributed to the development of CSSC :-
James Youngman, Ross Ridge, Eric Allman, Lars Hecking,
Larry McVoy, Dave Bodenstab, Malcolm Boff, Richard Polton,
Fila Kolodny, Peter Kjellerstedt, John Interrante, Marko
Rauhamaa, Achim Hoffann, Dick Streefland, Greg A. Woods,
Aron Griffis, Michael Sterrett, William W. Austin, Hyman
Rosen, Mark Reynolds, Sergey Ostashenko, Frank van
Maarseveen, Jeff Sheinberg, Thomas Duffy, Yann Dirson,
Martin Wilck
Many thanks to all the above people.
Changes since the previous release stable are:
New in CSSC-1.4.1, 2019-05-07
* This release - and future releases - of CSSC must be
compiled with a C++ compiler that supports the 2011
C++ standard.
* When the history file is updated (with admin or delta for
example) the history file is not made executable simply
because the &#39;x&#39; flag is set. Instead, preserve the
executable-ness from the history file we are replacing.
* This release is based on updated versions of gnulib and of
the googletest unit test framework.
Checksums for the release file are:
$ for sum in sha1sum md5sum ; do $sum CSSC-1.4.1.tar.gz; done
bfb99cbd6255c7035e99455de7241d4753746fe1 CSSC-1.4.1.tar.gz
c9aaae7602e39b7a5d438b0cc48fcaa3 CSSC-1.4.1.tar.gz
Please report any bugs via this software to the CSSC bug
reporting page, http://savannah.gnu.org/bugs/?group=cssc
&lt;/textarea&gt;</content:encoded>
<dc:date>2019-05-07T20:27:17+00:00</dc:date>
<dc:creator>James Youngman</dc:creator>
</item>
<item rdf:about="https://gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/">
<title>GNU Guix: GNU Guix 1.0.0 released</title>
<link>https://gnu.org/software/guix/blog/2019/gnu-guix-1.0.0-released/</link>
<content:encoded>&lt;p&gt;We are excited to announce the release of GNU Guix version 1.0.0!&lt;/p&gt;&lt;p&gt;The release comes with &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/System-Installation.html&quot;&gt;ISO-9660 installation
images&lt;/a&gt;,
a &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Running-Guix-in-a-VM.html&quot;&gt;virtual machine
image&lt;/a&gt;,
and with tarballs to install the package manager on top of your
GNU/Linux distro, either &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Requirements.html&quot;&gt;from
source&lt;/a&gt;
or &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Binary-Installation.html&quot;&gt;from
binaries&lt;/a&gt;.
Guix users can update by running &lt;code&gt;guix pull&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Guix 1.0!&quot; src=&quot;https://www.gnu.org/software/guix/static/blog/img/guix-1.0.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;One-point-oh always means a lot for free software releases. For Guix,
1.0 is the result of seven years of development, with code, packaging,
and documentation contributions made by 260 people, translation work
carried out by a dozen of people, and artwork and web site development
by a couple of individuals, to name some of the activities that have
been happening. During those years we published no less than &lt;a href=&quot;https://www.gnu.org/software/guix/blog/tags/releases/&quot;&gt;19 “0.x”
releases&lt;/a&gt;.&lt;/p&gt;&lt;h1&gt;The journey to 1.0&lt;/h1&gt;&lt;p&gt;We took our time to get there, which is quite unusual in an era where
free software moves so fast. Why did we take this much time? First, it
takes time to build a community around a GNU/Linux distribution, and a
distribution wouldnt really exist without it. Second, we feel like
were contributing an important piece to &lt;a href=&quot;https://www.gnu.org/gnu/about-gnu.html&quot;&gt;the GNU operating
system&lt;/a&gt;, and that is surely
intimidating and humbling.&lt;/p&gt;&lt;p&gt;Last, weve been building something new. Of course we stand on the
shoulders of giants, and in particular &lt;a href=&quot;https://nixos.org/nix/&quot;&gt;Nix&lt;/a&gt;,
which brought the functional software deployment paradigm that Guix
implements. But developing Guix has been—and still is!—a challenge in
many ways: its a &lt;a href=&quot;https://arxiv.org/abs/1305.4584&quot;&gt;programming&lt;/a&gt;
&lt;a href=&quot;https://www.gnu.org/software/guix/blog/2017/back-from-gpce/&quot;&gt;language&lt;/a&gt;
design challenge, an
&lt;a href=&quot;https://www.gnu.org/software/guix/blog/2015/service-composition-in-guixsd/&quot;&gt;operating&lt;/a&gt;
&lt;a href=&quot;https://www.gnu.org/software/guix/blog/2017/running-system-services-in-containers/&quot;&gt;system&lt;/a&gt;
design challenge, a challenge for
&lt;a href=&quot;https://www.gnu.org/software/guix/blog/2016/timely-delivery-of-security-updates/&quot;&gt;security&lt;/a&gt;,
&lt;a href=&quot;https://www.gnu.org/software/guix/blog/tags/reproducibility/&quot;&gt;reproducibility&lt;/a&gt;,
&lt;a href=&quot;https://www.gnu.org/software/guix/blog/tags/bootstrapping/&quot;&gt;bootstrapping&lt;/a&gt;,
usability, and more. In other words, its been a long but insightful
journey! :-)&lt;/p&gt;&lt;h1&gt;What GNU Guix can do for you&lt;/h1&gt;&lt;p&gt;Presumably some of the readers are discovering Guix today, so lets recap
what Guix can do for you as a user. Guix is a complete toolbox for
software deployment in general, which makes it different from most of
the tools you may be familiar with.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Guix manages packages, environments, containers, and systems.&quot; src=&quot;https://www.gnu.org/software/guix/static/blog/img/guix-scope.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;This may sound a little abstract so lets look at concrete use cases:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;As a user&lt;/em&gt;, Guix allows you to &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-package.html&quot;&gt;install applications and to keep
them
up-to-date&lt;/a&gt;:
search for software with &lt;code&gt;guix search&lt;/code&gt;, install it with &lt;code&gt;guix install&lt;/code&gt;, and maintain it up-to-date by regularly running &lt;code&gt;guix pull&lt;/code&gt; and &lt;code&gt;guix upgrade&lt;/code&gt;. Guix follows a so-called “rolling
release” model, so you can run &lt;code&gt;guix pull&lt;/code&gt; at any time to get the
latest and greatest bits of free software.&lt;/p&gt;&lt;p&gt;This certainly sounds familiar, but a distinguishing property here
is &lt;em&gt;dependability&lt;/em&gt;: Guix is transactional, meaning that you can at
any time roll back to a previous “generation” of your package set
with &lt;code&gt;guix package --roll-back&lt;/code&gt;, inspect differences with &lt;code&gt;guix package -l&lt;/code&gt;, and so on.&lt;/p&gt;&lt;p&gt;Another useful property is &lt;em&gt;reproducibility&lt;/em&gt;: Guix allows you to
deploy the &lt;em&gt;exact same software environment&lt;/em&gt; on different machines
or at different points in time thanks to &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-describe.html&quot;&gt;&lt;code&gt;guix describe&lt;/code&gt;&lt;/a&gt;
and &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pull.html&quot;&gt;&lt;code&gt;guix pull&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This, coupled with the fact that package management operations do
not require root access, is invaluable notably in the context of
high-performance computing (HPC) and reproducible science, which the
&lt;a href=&quot;https://guix-hpc.bordeaux.inria.fr/&quot;&gt;Guix-HPC effort&lt;/a&gt; has been
focusing on.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;As a developer&lt;/em&gt;, we hope youll enjoy &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-environment.html&quot;&gt;&lt;code&gt;guix environment&lt;/code&gt;&lt;/a&gt;,
which allows you to spawn one-off software environments. Suppose
youre a GIMP developer: running &lt;code&gt;guix environment gimp&lt;/code&gt; spawns a
shell with everything you need to hack on GIMP—much quicker than
manually installing its many dependencies.&lt;/p&gt;&lt;p&gt;Developers often struggle to push their work to users so they get
quick feedback. The &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2017/creating-bundles-with-guix-pack/&quot;&gt;&lt;code&gt;guix pack&lt;/code&gt;&lt;/a&gt;
provides an easy way to create &lt;em&gt;container images&lt;/em&gt; for use by Docker
&amp;amp; co., or even &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2018/tarballs-the-ultimate-container-image-format/&quot;&gt;standalone relocatable
tarballs&lt;/a&gt;
that anyone can run, regardless of the GNU/Linux distribution they
use.&lt;/p&gt;&lt;p&gt;Oh, and you may also like &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Package-Transformation-Options.html&quot;&gt;package transformation
options&lt;/a&gt;,
which allow you define package variants from the command line.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;As a system administrator&lt;/em&gt;—and actually, were all system
administrators of sorts on our laptops!—, Guixs declarative and
unified approach to configuration management should be handy. It
surely is a departure from what most people are used to, but it is
so reassuring: one configuration file is enough to specify &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Using-the-Configuration-System.html&quot;&gt;all the
aspects of the system
config&lt;/a&gt;—services,
file systems, locale, accounts—all in the same language.&lt;/p&gt;&lt;p&gt;That makes it surprisingly easy to deploy otherwise complex services
such as applications that depend on Web services. For instance,
setting up
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Version-Control-Services.html#Cgit-Service&quot;&gt;CGit&lt;/a&gt;
or
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Monitoring-Services.html#Zabbix-front_002dend&quot;&gt;Zabbix&lt;/a&gt;
is a one-liner, even though behind the scenes that involves setting
up nginx, fcgiwrap, etc. Wed love to see to what extent this helps
people self-host services—sort of similar to what
&lt;a href=&quot;https://freedombox.org/&quot;&gt;FreedomBox&lt;/a&gt; and
&lt;a href=&quot;https://yunohost.org/&quot;&gt;YunoHost&lt;/a&gt; have been focusing on.&lt;/p&gt;&lt;p&gt;With &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html&quot;&gt;&lt;code&gt;guix system&lt;/code&gt;&lt;/a&gt;
you can instantiate a configuration on your machine, or in a virtual
machine (VM) where you can test it, or in a container. You can also
provision ISO images, VM images, or container images with a complete
OS, from the same config, all with &lt;code&gt;guix system&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The &lt;a href=&quot;https://www.gnu.org/software/guix/guix-refcard.pdf&quot;&gt;quick reference
card&lt;/a&gt; shows the
important commands. As you start diving deeper into Guix, youll
discover that many aspects of the system are exposed using consistent
&lt;a href=&quot;https://www.gnu.org/software/guile/&quot;&gt;Guile&lt;/a&gt; programming interfaces:
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Defining-Packages.html&quot;&gt;package
definitions&lt;/a&gt;,
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Services.html&quot;&gt;system
services&lt;/a&gt;,
the &lt;a href=&quot;https://www.gnu.org/software/shepherd/&quot;&gt;“init” system&lt;/a&gt;, and a whole
bunch of system-level libraries. We believe that makes the system very
&lt;em&gt;hackable&lt;/em&gt;, and we hope youll find it as much fun to play with as we do.&lt;/p&gt;&lt;p&gt;So much for the overview!&lt;/p&gt;&lt;h1&gt;Whats new since 0.16.0&lt;/h1&gt;&lt;p&gt;For those whove been following along, a great many things have changed
over the last 5 months since the &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2018/gnu-guix-and-guixsd-0.16.0-released/&quot;&gt;0.16.0
release&lt;/a&gt;—99
people contributed over 5,700 commits during that time! Here are the
highlights:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The ISO installation image now runs a cute &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Guided-Graphical-Installation.html&quot;&gt;text-mode graphical
installer&lt;/a&gt;—big
thanks to Mathieu Othacehe for writing it and to everyone who
tested it and improved it! It is similar in spirit to the Debian
installer. Whether youre a die-hard GNU/Linux hacker or a novice
user, youll certainly find that this makes system installation
much less tedious than it was! The installer is fully translated
to French, German, and Spanish.&lt;/li&gt;&lt;li&gt;The new &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Running-GuixSD-in-a-VM.html&quot;&gt;VM
image&lt;/a&gt;
better matches user expectations: whether you want to tinker with
Guix System and see what its like, or whether you want to use it
as a development environment, this VM image should be more directly
useful.&lt;/li&gt;&lt;li&gt;The user interface was improved: aliases for common operations
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-package.html&quot;&gt;such as &lt;code&gt;guix search&lt;/code&gt; and &lt;code&gt;guix install&lt;/code&gt;&lt;/a&gt;
are now available, diagnostics are now colorized, more operations
show a progress bar, theres a new &lt;code&gt;--verbosity&lt;/code&gt; option recognized
by all commands, and most commands are now “quiet” by default.&lt;/li&gt;&lt;li&gt;Theres a new &lt;code&gt;--with-git-url&lt;/code&gt; &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Package-Transformation-Options.html&quot;&gt;package transformation
option&lt;/a&gt;,
that goes with &lt;code&gt;--with-branch&lt;/code&gt; and &lt;code&gt;--with-commit&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Guix now has a first-class, uniform mechanism to configure
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Keyboard-Layout.html&quot;&gt;keyboard
layout&lt;/a&gt;—a
long overdue addition. Related to that, &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/X-Window.html&quot;&gt;Xorg
configuration&lt;/a&gt;
has been streamlined with the new &lt;code&gt;xorg-configuration&lt;/code&gt; record.&lt;/li&gt;&lt;li&gt;We introduced &lt;code&gt;guix pack -R&lt;/code&gt; &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2018/tarballs-the-ultimate-container-image-format/&quot;&gt;a while
back&lt;/a&gt;:
it creates tarballs containing &lt;em&gt;relocatable&lt;/em&gt; application bundles
that rely on user namespaces. Starting from 1.0, &lt;code&gt;guix pack -RR&lt;/code&gt;
(like “reliably relocatable”?) generates relocatable binaries that
fall back to &lt;a href=&quot;https://proot-me.github.io/&quot;&gt;PRoot&lt;/a&gt; on systems where
&lt;a href=&quot;http://man7.org/linux/man-pages/man7/user_namespaces.7.html&quot;&gt;user
namespaces&lt;/a&gt;
are not supported.&lt;/li&gt;&lt;li&gt;More than 1,100 packages were added, leading to &lt;a href=&quot;https://www.gnu.org/software/guix/packages&quot;&gt;close to 10,000
packages&lt;/a&gt;, 2,104
packages were updated, and several system services were
contributed.&lt;/li&gt;&lt;li&gt;The manual has been fully translated to
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/fr/html_node/&quot;&gt;French&lt;/a&gt;,
the
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/de/html_node/&quot;&gt;German&lt;/a&gt;
and &lt;a href=&quot;https://www.gnu.org/software/guix/manual/es/html_node/&quot;&gt;Spanish&lt;/a&gt;
translations are nearing completion, and work has begun on a
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/zh-cn/html_node/&quot;&gt;Simplified
Chinese&lt;/a&gt;
translation. You can help &lt;a href=&quot;https://translationproject.org/domain/guix-manual.html&quot;&gt;translate the manual into your
language&lt;/a&gt;
by &lt;a href=&quot;https://translationproject.org/html/translators.html&quot;&gt;joining the Translation
Project&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Thats a long list already, but you can find more details in the
&lt;a href=&quot;https://git.savannah.gnu.org/cgit/guix.git/tree/NEWS?h=version-1.0.0&quot;&gt;&lt;code&gt;NEWS&lt;/code&gt;&lt;/a&gt;
file.&lt;/p&gt;&lt;h1&gt;Whats next?&lt;/h1&gt;&lt;p&gt;One-point-oh is a major milestone, especially for those of us whove
been on board for several years. But with the wealth of ideas weve
been collecting, its definitely not the end of the road!&lt;/p&gt;&lt;p&gt;If youre interested in “devops” and distributed deployment, you will
certainly be happy to help in that area, those interested in OS
development might want to make &lt;a href=&quot;https://www.gnu.org/software/shepherd/&quot;&gt;the
Shepherd&lt;/a&gt; more flexible and
snappy, furthering integration with &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/&quot;&gt;Software
Heritage&lt;/a&gt;
will probably be #1 on the to-do list of scientists concerned with
long-term reproducibility, programming language tinkerers may want to
push
&lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/G_002dExpressions.html#G_002dExpressions&quot;&gt;G-expressions&lt;/a&gt;
further, etc. Guix 1.0 is a tool thats both serviceable for ones
day-to-day computer usage and a great playground for the tinkerers among
us.&lt;/p&gt;&lt;p&gt;Whether you want to help on design, coding, maintenance, system
administration, translation, testing, artwork, web services, funding,
organizing a Guix install party… &lt;a href=&quot;https://www.gnu.org/software/guix/contribute/&quot;&gt;your contributions are
welcome&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;Were humans—dont hesitate to &lt;a href=&quot;https://www.gnu.org/software/guix/contact/&quot;&gt;get in touch with
us&lt;/a&gt;, and enjoy Guix 1.0!&lt;/p&gt;&lt;h4&gt;About GNU Guix&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/guix&quot;&gt;GNU Guix&lt;/a&gt; is a transactional package
manager and an advanced distribution of the GNU system that &lt;a href=&quot;https://www.gnu.org/distros/free-system-distribution-guidelines.html&quot;&gt;respects
user
freedom&lt;/a&gt;.
Guix can be used on top of any system running the kernel Linux, or it
can be used as a standalone operating system distribution for i686,
x86_64, ARMv7, and AArch64 machines.&lt;/p&gt;&lt;p&gt;In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection. When used as a standalone
GNU/Linux distribution, Guix offers a declarative, stateless approach to
operating system configuration management. Guix is highly customizable
and hackable through &lt;a href=&quot;https://www.gnu.org/software/guile&quot;&gt;Guile&lt;/a&gt;
programming interfaces and extensions to the
&lt;a href=&quot;http://schemers.org&quot;&gt;Scheme&lt;/a&gt; language.&lt;/p&gt;</content:encoded>
<dc:date>2019-05-02T14:00:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9426">
<title>dico @ Savannah: Version 2.9</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9426</link>
<content:encoded>&lt;p&gt;Version 2.9 of GNU dico is available from download from &lt;a href=&quot;https://ftp.gnu.org/gnu/dico/dico-2.9.tar.xz&quot;&gt;the GNU archive&lt;/a&gt; and from &lt;a href=&quot;https://download.gnu.org.ua/release/dico/dico-2.9.tar.xz&quot;&gt;its main archive&lt;/a&gt; site.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This version fixes compilation on 32-bit systems.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-24T06:57:18+00:00</dc:date>
<dc:creator>Sergey Poznyakoff</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9425">
<title>rush @ Savannah: Version 1.9</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9425</link>
<content:encoded>&lt;p&gt;Version 1.9 is available for download from &lt;a href=&quot;https://ftp.gnu.org/gnu/rush/rush-1.9.tar.xz&quot;&gt;GNU&lt;/a&gt; and &lt;a href=&quot;http://download.gnu.org.ua/release/rush/rush-1.9.tar.xz&quot;&gt;Puszcza&lt;/a&gt; archives. It should soon become available in the mirrors too.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;New in this version:
&lt;br /&gt;
&lt;/p&gt;
&lt;h4&gt;Backreference expansion&lt;/h4&gt;
&lt;p&gt;Arguments to tranformations, chroot and chdir statements can contain references to parenthesized groups in the recent regular expression match. Such references are replaced with the strings that matched the corresponding groups. Syntactically, a backreference expansion is a percent sign followed by one-digit number of the subexpression (1-based, %0 refers to entire matched line). For example
&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote class=&quot;verbatim&quot;&gt;&lt;p&gt;  rule X&lt;br /&gt;
   command ^cd (.+) &amp;amp;&amp;amp; (.+)&lt;br /&gt;
   chdir %1&lt;br /&gt;
   set %2&lt;br /&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;User-defined variables&lt;/h4&gt;
&lt;p&gt;The configuration file can define new variables or redefine the built-in ones using the &lt;strong&gt;setvar&lt;/strong&gt; statement:
&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote class=&quot;verbatim&quot;&gt;&lt;p&gt;   setvar[VAR] PATTERN&lt;br /&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Here, VAR is the variable name, and PATTERN is its new value. The PATTERN is subject to variable and backreference expansion.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;User-defined variables can be unset using the &quot;unsetvar&quot; statement:
&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote class=&quot;verbatim&quot;&gt;&lt;p&gt;   unsetvar[VAR]&lt;br /&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Unsetting a built-in variable, previously redefined using the &lt;strong&gt;setvar&lt;/strong&gt; statement causes the user-supplied definition to be forgotten and the built-in one restored.
&lt;br /&gt;
&lt;/p&gt;
&lt;h4&gt;Shell-like variable expansion&lt;/h4&gt;
&lt;p&gt;The following shell-like notations are supported:
&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote class=&quot;verbatim&quot;&gt;&lt;p&gt; ${VAR:-WORD}   Use Default Values&lt;br /&gt;
${VAR:=WORD}   Assign Default Values&lt;br /&gt;
${VAR:?WORD}   Display Error if Null or Unset&lt;br /&gt;
${VAR:+WORD}   Use Alternate Value&lt;br /&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;h4&gt;New script rush-po for extracting translatable strings from the configuration&lt;/h4&gt;
&lt;p&gt;The script rush-po.awk that was used in prior versions has been withdrawn.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-24T06:02:12+00:00</dc:date>
<dc:creator>Sergey Poznyakoff</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9424">
<title>remotecontrol @ Savannah: How hacking threats spurred secret U.S. blacklist</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9424</link>
<content:encoded>&lt;p&gt;U.S. energy regulators are pursuing a risky plan to share with electric utilities a secret &quot;don&#39;t buy&quot; list of foreign technology suppliers, according to multiple sources.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.eenews.net/stories/1060176111&quot;&gt;https://www.eenews.net/stories/1060176111&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-23T21:38:53+00:00</dc:date>
<dc:creator>Stephen H. Dawson DSL</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9423">
<title>gnustep @ Savannah: Main development is located at http://github.com/gnustep</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9423</link>
<content:encoded>&lt;p&gt;Main development is located at &lt;a href=&quot;http://github.com/gnustep&quot;&gt;http://github.com/gnustep&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-23T14:25:45+00:00</dc:date>
<dc:creator>Gregory John Casamento</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9422">
<title>parallel @ Savannah: GNU Parallel 20190422 (&#39;Invitation&#39;) released [stable]</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9422</link>
<content:encoded>&lt;p&gt;GNU Parallel 20190422 (&#39;Invitation&#39;) [stable] has been released. It is available for download at: &lt;a href=&quot;http://ftpmirror.gnu.org/parallel/&quot;&gt;http://ftpmirror.gnu.org/parallel/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;No new functionality was introduced so this is a good candidate for a stable release.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;Invitation to 10 year reception&lt;/h2&gt;
&lt;p&gt;GNU Parallel is 10 years old in a year on 2020-04-22. You are here by invited to a reception on Friday 2020-04-17.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The primary reception will be held in Copenhagen, DK. Please reserve the date and email &lt;a href=&quot;mailto:happybirthdaygnuparallel@tange.dk&quot;&gt;happybirthdaygnuparallel@tange.dk&lt;/a&gt; if you want to join.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you cannot make it, you are encouraged to host a parallel party.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;So far we hope to have parallel parties at:
&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote class=&quot;verbatim&quot;&gt;&lt;p&gt;   PROSA&lt;br /&gt;
  Vester Farimagsgade 37A&lt;br /&gt;
  DK-1606 København V&lt;br /&gt;
  RSVP: happybirthdaygnuparallel@tange.dk&lt;br /&gt;
&lt;br /&gt;
  PROSA&lt;br /&gt;
  Søren Frichs Vej 38 K th&lt;br /&gt;
  DK-8230 Åbyhøj&lt;br /&gt;
  RSVP: To be determined&lt;br /&gt;
  &lt;br /&gt;
  PROSA&lt;br /&gt;
  Overgade 54&lt;br /&gt;
  DK-5000 Odense C&lt;br /&gt;
  RSVP: To be determined&lt;br /&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;If you want to host a party held in parallel (either in this or in a parallel universe), please let me know, so it can be announced.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you have parallel ideas for how to celebrate GNU Parallel, please post on the email list parallel@gnu.org. So far we have the following ideas:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use GNU Parallel logo (the café wall illusion) as decoration everywhere - preferably in a moving version where the bars slide. Maybe we can borrow this &lt;a href=&quot;https://www.youtube.com/watch?v=_XFDnFLqRFE&quot;&gt;https://www.youtube.com/watch?v=_XFDnFLqRFE&lt;/a&gt; or make an animation in javascript based on &lt;a href=&quot;https://bl.ocks.org/Fil/13177d3c911fb8943cb0013086469b87&quot;&gt;https://bl.ocks.org/Fil/13177d3c911fb8943cb0013086469b87&lt;/a&gt;? Other illusions might be fun, too.
&lt;/li&gt;
&lt;li&gt;Only serve beverages in parallel (2 or more), which may or may not be the same kind of beverage, and may or may not be served to the same person, and may or may not be served by multiple waiters in parallel
&lt;/li&gt;
&lt;li&gt;Let people drink in parallel with straws (2 or more straws)
&lt;/li&gt;
&lt;li&gt;Serve popcorn as snack (funny because cores and kernels are the same word in Danish, and GNU Parallel keeps cores hot)
&lt;/li&gt;
&lt;li&gt;Serve saltstænger and similar parallel snacks.
&lt;/li&gt;
&lt;li&gt;Serve (snack friendly) cereal (&quot;serial&quot;) in parallel bowls.
&lt;/li&gt;
&lt;li&gt;Live parallel streaming from parallel parties
&lt;/li&gt;
&lt;li&gt;Play songs in parallel that use the same 4 chords: &lt;a href=&quot;https://www.youtube.com/watch?v=5pidokakU4I&quot;&gt;https://www.youtube.com/watch?v=5pidokakU4I&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Play songs named parallel, serial, mutex, race condition and similar
&lt;/li&gt;
&lt;li&gt;Have RC racing cars to demonstrate race condition
&lt;/li&gt;
&lt;li&gt;Put a counting semaphore on the toilets
&lt;/li&gt;
&lt;li&gt;Only let people leave one at a time to simulate serialized output - UNLESS they swap some clothing (to simulate half line mixing)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have interesting stories about or uses of GNU Parallel, please post them, so can be part of the anniversary update.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Quote of the month:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;  Y&#39;all need some GNU parallel in your lives
&lt;br /&gt;
    -- ChaKu @ChaiLovesChai@twitter
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;New in this release:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Invitation to the 10 years anniversary next year.
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;The Austin Linux Meetup: KVM as Hypervisor and GNU Parallel &lt;a href=&quot;https://www.meetup.com/linuxaustin/events/jbxcnqyzgbpb/&quot;&gt;https://www.meetup.com/linuxaustin/events/jbxcnqyzgbpb/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Bug fixes and man page updates.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get the book: GNU Parallel 2018 &lt;a href=&quot;http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html&quot;&gt;http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel - For people who live life in the parallel lane.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;About GNU Parallel&lt;/h2&gt;
&lt;p&gt;GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You can find more about GNU Parallel at: &lt;a href=&quot;http://www.gnu.org/s/parallel/&quot;&gt;http://www.gnu.org/s/parallel/&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;You can install GNU Parallel in just 10 seconds with:
&lt;br /&gt;
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - &lt;a href=&quot;http://pi.dk/3&quot;&gt;http://pi.dk/3&lt;/a&gt;) | bash
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Watch the intro video on &lt;a href=&quot;http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1&quot;&gt;http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1&lt;/a&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When using programs that use GNU Parallel to process data for publication please cite:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;O. Tange (2018): GNU Parallel 2018, March 2018, &lt;a href=&quot;https://doi.org/10.5281/zenodo.1146014&quot;&gt;https://doi.org/10.5281/zenodo.1146014&lt;/a&gt;.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you like GNU Parallel:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give a demo at your local user group/team/colleagues
&lt;/li&gt;
&lt;li&gt;Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
&lt;/li&gt;
&lt;li&gt;Get the merchandise &lt;a href=&quot;https://gnuparallel.threadless.com/designs/gnu-parallel&quot;&gt;https://gnuparallel.threadless.com/designs/gnu-parallel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Request or write a review for your favourite blog or magazine
&lt;/li&gt;
&lt;li&gt;Request or build a package for your favourite distribution (if it is not already there)
&lt;/li&gt;
&lt;li&gt;Invite me for your next conference
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use programs that use GNU Parallel for research:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Please cite GNU Parallel in you publications (use --citation)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If GNU Parallel saves you money:
&lt;br /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(Have your company) donate to FSF &lt;a href=&quot;https://my.fsf.org/donate/&quot;&gt;https://my.fsf.org/donate/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;About GNU SQL&lt;/h2&gt;
&lt;p&gt;GNU sql aims to give a simple, unified interface for accessing databases through all the different databases&#39; command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The database is addressed using a DBURL. If commands are left out you will get that database&#39;s interactive shell.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When using GNU SQL for a publication please cite:
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.
&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;About GNU Niceload&lt;/h2&gt;
&lt;p&gt;GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-21T18:20:53+00:00</dc:date>
<dc:creator>Ole Tange</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9419">
<title>gnuastro @ Savannah: Gnuastro 0.9 released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9419</link>
<content:encoded>&lt;p&gt;The 9th release of GNU Astronomy Utilities (Gnuastro) is now available for download. Please see &lt;a href=&quot;http://lists.gnu.org/archive/html/info-gnuastro/2019-04/msg00001.html&quot;&gt;the announcement&lt;/a&gt; for details.&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-17T17:54:52+00:00</dc:date>
<dc:creator>Mohammad Akhlaghi</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9417">
<title>GNU Hackers Meeting: Malfunction in ghm-planning (at) gnu.org</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9417</link>
<content:encoded>&lt;p&gt;Due to a problem in the alias configuration, mails sent to ghm-planning before Sun Apr 14 8:00 CEST have been silently dropped.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;If you sent a registration email and/or a talk proposal for the GHM 2019, please resend it.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Sorry for the inconvenience!&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-14T07:56:27+00:00</dc:date>
<dc:creator>Jose E. Marchesi</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9415">
<title>GNU Hackers Meeting: GNU Hackers&#39; Meeting 2019 in Madrid</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9415</link>
<content:encoded>&lt;p&gt;Twelve years after it&#39;s first edition in Orense, the GHM is back to Spain! This time, we will be gathering in the nice city of Madrid for hacking, learning and meeting each other.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The event will have place from Wednesday 4 September to Friday 6
&lt;br /&gt;
September, 2019.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Please visit &lt;a href=&quot;http://www.gnu.org/ghm/2019&quot;&gt;http://www.gnu.org/ghm/2019&lt;/a&gt; for more information on the venue and instructions on how to register and propose talks.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The website will be updated as we complete the schedule and the organizational details, so stay tuned!&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-12T20:03:26+00:00</dc:date>
<dc:creator>Jose E. Marchesi</dc:creator>
</item>
<item rdf:about="https://gnunet.org/#gnunet-0.11.2-release">
<title>GNUnet News: 2019-04-04: GNUnet 0.11.2 released</title>
<link>https://gnunet.org/#gnunet-0.11.2-release</link>
<content:encoded>&lt;h3&gt;
&lt;a name=&quot;gnunet-0.11.2-release&quot;&gt;2019-04-04: GNUnet 0.11.2 released&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;
We are pleased to announce the release of GNUnet 0.11.2.
&lt;/p&gt;
&lt;p&gt;
This is a bugfix release for 0.11.0, mostly fixing minor bugs,
improving documentation and fixing various build issues. In
terms of usability, users should be aware that there are still a large
number of known open issues in particular with respect to ease of use,
but also some critical privacy issues especially for mobile users.
Also, the nascent network is tiny (about 200 peers) and thus unlikely to
provide good anonymity or extensive amounts of interesting
information. As a result, the 0.11.2 release is still only suitable
for early adopters with some reasonable pain tolerance.
&lt;/p&gt;
&lt;h4&gt;Download links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.2.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.2.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.2.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.2.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
(gnunet-gtk and gnunet-fuse were not released again, as there were no
changes and the 0.11.0 versions are expected to continue to work fine
with gnunet-0.11.2.)
&lt;/p&gt;
&lt;p&gt;
Note that due to mirror synchronization, not all links might be functional
early after the release. For direct access try &lt;a href=&quot;http://ftp.gnu.org/gnu/gnunet/&quot;&gt;http://ftp.gnu.org/gnu/gnunet/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Note that GNUnet is now started using &lt;tt&gt;gnunet-arm -s&lt;/tt&gt;. GNUnet should be
stopped using &lt;tt&gt;gnunet-arm -e&lt;/tt&gt;.
&lt;/p&gt;
&lt;h4&gt;Noteworthy changes in 0.11.2&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;gnunet-qr was rewritten in C, removing our last dependency on Python 2.x&lt;/li&gt;
&lt;li&gt;REST and GNS proxy configuration options for address binding were added&lt;/li&gt;
&lt;li&gt;gnunet-publish by default no longer includes creation time&lt;/li&gt;
&lt;li&gt;Unreliable message ordering logic in CADET was fixed&lt;/li&gt;
&lt;li&gt;Various improvements to build system and documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The above is just the short list, our bugtracker lists
&lt;a href=&quot;https://bugs.gnunet.org/changelog_page.php?version_id=312&quot;&gt;
14 individual issues&lt;/a&gt; that were resolved since 0.11.0.
&lt;/p&gt;
&lt;h4&gt;Known Issues&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;There are known major design issues in the TRANSPORT, ATS and CORE subsystems
which will need to be addressed in the future to achieve acceptable usability,
performance and security.&lt;/li&gt;
&lt;li&gt;There are known moderate implementation limitations in CADET that
negatively impact performance. Also CADET may unexpectedly deliver messages out-of-order.&lt;/li&gt;
&lt;li&gt;There are known moderate design issues in FS that also impact
usability and performance.&lt;/li&gt;
&lt;li&gt;There are minor implementation limitations in SET that create
unnecessary attack surface for availability.&lt;/li&gt;
&lt;li&gt;The RPS subsystem remains experimental.&lt;/li&gt;
&lt;li&gt;Some high-level tests in the test-suite fail non-deterministically due to
the low-level TRANSPORT issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In addition to this list, you may also want to consult our bug tracker
at &lt;a href=&quot;https://bugs.gnunet.org/&quot;&gt;bugs.gnunet.org&lt;/a&gt; which lists
about 190 more specific issues.
&lt;/p&gt;
&lt;h4&gt;Thanks&lt;/h4&gt;
&lt;p&gt;
This release was the work of many people. The following people
contributed code and were thus easily identified:
ng0, Christian Grothoff, Hartmut Goebel, Martin Schanzenbach, Devan Carpenter, Naomi Phillips and Julius Bünger.
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-04T13:00:00+00:00</dc:date>
<dc:creator>GNUnet News</dc:creator>
</item>
<item rdf:about="https://gnunet.org/#gnunet-0.11.1-release">
<title>GNUnet News: 2019-04-03: GNUnet 0.11.1 released</title>
<link>https://gnunet.org/#gnunet-0.11.1-release</link>
<content:encoded>&lt;h3&gt;
&lt;a name=&quot;gnunet-0.11.1-release&quot;&gt;2019-04-03: GNUnet 0.11.1 released&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;
We are pleased to announce the release of GNUnet 0.11.1.
&lt;/p&gt;
&lt;p&gt;
This is a bugfix release for 0.11.0, mostly fixing minor bugs,
improving documentation and fixing various build issues. In
terms of usability, users should be aware that there are still a large
number of known open issues in particular with respect to ease of use,
but also some critical privacy issues especially for mobile users.
Also, the nascent network is tiny (about 200 peers) and thus unlikely to
provide good anonymity or extensive amounts of interesting
information. As a result, the 0.11.1 release is still only suitable
for early adopters with some reasonable pain tolerance.
&lt;/p&gt;
&lt;h4&gt;Download links&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.1.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.1.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.1.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-0.11.1.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-gtk-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&quot;&gt;http://ftpmirror.gnu.org/gnunet/gnunet-fuse-0.11.0.tar.gz.sig&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
(gnunet-gtk and gnunet-fuse were not released again, as there were no
changes and the 0.11.0 versions are expected to continue to work fine
with gnunet-0.11.1.)
&lt;/p&gt;
&lt;p&gt;
Note that due to mirror synchronization, not all links might be functional
early after the release. For direct access try &lt;a href=&quot;http://ftp.gnu.org/gnu/gnunet/&quot;&gt;http://ftp.gnu.org/gnu/gnunet/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Note that GNUnet is now started using &lt;tt&gt;gnunet-arm -s&lt;/tt&gt;. GNUnet should be
stopped using &lt;tt&gt;gnunet-arm -e&lt;/tt&gt;.
&lt;/p&gt;
&lt;h4&gt;Noteworthy changes in 0.11.1&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;gnunet-qr was rewritten in C, removing our last dependency on Python 2.x&lt;/li&gt;
&lt;li&gt;REST and GNS proxy configuration options for address binding were added&lt;/li&gt;
&lt;li&gt;gnunet-publish by default no longer includes creation time&lt;/li&gt;
&lt;li&gt;Unreliable message ordering logic in CADET was fixed&lt;/li&gt;
&lt;li&gt;Various improvements to build system and documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The above is just the short list, our bugtracker lists
&lt;a href=&quot;https://bugs.gnunet.org/changelog_page.php?version_id=312&quot;&gt;
14 individual issues&lt;/a&gt; that were resolved since 0.11.0.
&lt;/p&gt;
&lt;h4&gt;Known Issues&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;There are known major design issues in the TRANSPORT, ATS and CORE subsystems
which will need to be addressed in the future to achieve acceptable usability,
performance and security.&lt;/li&gt;
&lt;li&gt;There are known moderate implementation limitations in CADET that
negatively impact performance. Also CADET may unexpectedly deliver messages out-of-order.&lt;/li&gt;
&lt;li&gt;There are known moderate design issues in FS that also impact
usability and performance.&lt;/li&gt;
&lt;li&gt;There are minor implementation limitations in SET that create
unnecessary attack surface for availability.&lt;/li&gt;
&lt;li&gt;The RPS subsystem remains experimental.&lt;/li&gt;
&lt;li&gt;Some high-level tests in the test-suite fail non-deterministically due to
the low-level TRANSPORT issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In addition to this list, you may also want to consult our bug tracker
at &lt;a href=&quot;https://bugs.gnunet.org/&quot;&gt;bugs.gnunet.org&lt;/a&gt; which lists
about 190 more specific issues.
&lt;/p&gt;
&lt;h4&gt;Thanks&lt;/h4&gt;
&lt;p&gt;
This release was the work of many people. The following people
contributed code and were thus easily identified:
ng0, Christian Grothoff, Hartmut Goebel, Martin Schanzenbach, Devan Carpenter, Naomi Phillips and Julius Bünger.
&lt;/p&gt;</content:encoded>
<dc:date>2019-04-03T16:00:00+00:00</dc:date>
<dc:creator>GNUnet News</dc:creator>
</item>
<item rdf:about="https://gnu.org/software/guix/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/">
<title>GNU Guix: Connecting reproducible deployment to a long-term source code archive</title>
<link>https://gnu.org/software/guix/blog/2019/connecting-reproducible-deployment-to-a-long-term-source-code-archive/</link>
<content:encoded>&lt;p&gt;GNU Guix can be used as a “package manager” to install and upgrade
software packages as is familiar to GNU/Linux users, or as an
environment manager, but it can also provision containers or virtual
machines, and manage the operating system running on your machine.&lt;/p&gt;&lt;p&gt;One foundation that sets it apart from other tools in these areas is
&lt;em&gt;reproducibility&lt;/em&gt;. From a high-level view, Guix allows users to
&lt;em&gt;declare&lt;/em&gt; complete software environments and instantiate them. They can
share those environments with others, who can replicate them or adapt
them to their needs. This aspect is key to reproducible computational
experiments: scientists need to reproduce software environments before
they can reproduce experimental results, and this is one of the things
we are focusing on in the context of the
&lt;a href=&quot;https://guix-hpc.bordeaux.inria.fr&quot;&gt;Guix-HPC&lt;/a&gt; effort. At a lower
level, the project, along with others in the &lt;a href=&quot;https://reproducible-builds.org&quot;&gt;Reproducible
Builds&lt;/a&gt; community, is working to ensure
that software build outputs are &lt;a href=&quot;https://reproducible-builds.org/docs/definition/&quot;&gt;reproducible,
bit for bit&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Work on reproducibility at all levels has been making great progress.
Guix, for instance, allows you to &lt;a href=&quot;https://www.gnu.org/software/guix/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/&quot;&gt;travel back in
time&lt;/a&gt;.
That Guix can travel back in time &lt;em&gt;and&lt;/em&gt; build software reproducibly is a
great step forward. But theres still an important piece thats missing
to make this viable: a stable source code archive. This is where
&lt;a href=&quot;https://www.softwareheritage.org&quot;&gt;Software Heritage&lt;/a&gt; (SWH for short)
comes in.&lt;/p&gt;&lt;h1&gt;When source code vanishes&lt;/h1&gt;&lt;p&gt;Guix contains thousands of package definitions. Each &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Defining-Packages.html&quot;&gt;package
definition&lt;/a&gt;
specifies the packages source code URL and hash, the packages
dependencies, and its build procedure. Most of the time, the packages
source code is an archive (a “tarball”) fetched from a web site, but
more and more frequently the source code is a specific revision checked
out directly from a version control system.&lt;/p&gt;&lt;p&gt;The obvious question, then, is: what happens if the source code URL
becomes unreachable? The whole reproducibility endeavor collapses when
source code disappears. And source code &lt;em&gt;does&lt;/em&gt; disappear, or, even
worse, it can be modified in place. At GNU were doing a good job of
having stable hosting that keeps releases around “forever”, unchanged
(modulo rare exceptions). But a lot of free software out there is
hosted on personal web pages with a short lifetime and on commercial
hosting services that come and go.&lt;/p&gt;&lt;p&gt;By default Guix would look up source code by hash in the caches of our
build farms. This comes for free: the &lt;a href=&quot;https://www.gnu.org/software/guix/manual/en/html_node/Substitutes.html&quot;&gt;“substitute”
mechanism&lt;/a&gt;
extends to all “build artifacts”, including downloads. However, with
limited capacity, our build farms do not keep all the source code of all
the packages for a long time. Thus, one could very well find oneself
unable to rebuild a package months or years later, simply because its
source code disappeared or moved to a different location.&lt;/p&gt;&lt;h1&gt;Connecting to the archive&lt;/h1&gt;&lt;p&gt;It quickly became clear that reproducible builds had “reproducible
source code downloads”, so to speak, as a prerequisite. The Software
Heritage archive is the missing piece that would finally allow us to
reproduce software environments years later in spite of the volatility
of code hosting sites. Software Heritages mission is to archive
essentially “all” the source code ever published, including version
control history. Its archive already periodically ingests release
tarballs from the GNU servers, repositories from GitHub, packages from
PyPI, and much more.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Software Heritage logo&quot; src=&quot;https://www.gnu.org/software/guix/static/blog/img/software-heritage-logo-title.svg&quot; /&gt;&lt;/p&gt;&lt;p&gt;We quickly settled on a scheme where Guix would fall back to the
Software Heritage archive whenever it fails to download source code from
its original location. That way, package definitions dont need to be
modified: they still refer to the original source code URL, but the
downloading machinery transparently goes to Software Heritage when
needed.&lt;/p&gt;&lt;p&gt;There are two types of source code downloads in Guix: tarball downloads,
and version control checkouts. In the former case, resorting to
Software Heritage is easy: Guix knows the SHA256 hash of the tarball so
it can look it up by hash using &lt;a href=&quot;https://archive.softwareheritage.org/api/1/content/raw/&quot;&gt;the &lt;code&gt;/content&lt;/code&gt; endpoint of the
archives
interface&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Fetching version control checkouts is more involved. In this case, the
downloader would first resolve the commit identifier to obtain a
&lt;a href=&quot;https://archive.softwareheritage.org/api/1/revision/&quot;&gt;Software Heritage
revision&lt;/a&gt;. The
actual code for that revision is then fetched through the
&lt;a href=&quot;https://docs.softwareheritage.org/devel/swh-vault/api.html&quot;&gt;&lt;em&gt;vault&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The vault conveniently allows users to fetch the tarball corresponding
to a revision. However, not all revisions are readily available as
tarballs (understandably), so the vault has an interface that allows you
to request the “&lt;em&gt;cooking&lt;/em&gt;” of a specific revision. Cooking is
asynchronous and can take some time. Currently, if a revision hasnt
been cooked yet, the Guix download machinery will request it and wait
until it is available. The process can take some time but will
eventually succeed.&lt;/p&gt;&lt;p&gt;Success! At this point, we have essentially bridged the gap between the
stable archive that Software Heritage provides and the reproducible
software deployment pipeline of Guix. This code &lt;a href=&quot;https://issues.guix.info/issue/33432&quot;&gt;was
integrated&lt;/a&gt; in November 2018,
making it the first free software distribution backed by a stable
archive.&lt;/p&gt;&lt;h1&gt;The challenges ahead&lt;/h1&gt;&lt;p&gt;This milestone was encouraging: we had seemingly achieved our goal, but
we also knew of several shortcomings. First, even though the software
we package is still primarily distributed as tarballs, Software Heritage
keeps relatively few of these tarballs. Software Heritage does ingest
tarballs, notably those found on &lt;a href=&quot;https://ftp.gnu.org/gnu/&quot;&gt;the GNU
servers&lt;/a&gt;, but the primary focus is on
preserving complete version control repositories rather than release
tarballs.&lt;/p&gt;&lt;p&gt;It is not yet clear to us what to do with plain old tarballs. On one
hand, they are here and cannot be ignored. Furthermore, some provide
artifacts that are not in version control, such as &lt;code&gt;configure&lt;/code&gt; scripts,
and often enough they are accompanied by a cryptographic signature from
the developers that allows recipients to &lt;em&gt;authenticate&lt;/em&gt; the code—an
important piece of information thats often missing from version control
history. On the other hand, version control tags are increasingly
becoming the mechanism of choice to distribute software releases. It
may be that tags will become the primary mechanism for software release
distribution soon enough.&lt;/p&gt;&lt;p&gt;Version control tags turn out not to be ideal either, because theyre
mutable and per-repository. Conversely, Git commit identifiers are
unambiguous and repository-independent because theyre essentially
content-addressed, but our package definitions often refer to tags, not
commits, because that makes it clearer that were providing an actual
release and not an arbitrary revision (this is another illustration of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Zooko&#39;s_triangle&quot;&gt;Zookos triangle&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;This leads to another limitation that stems from the mismatch between
the way Guix and Software Heritage compute hashes over version control
checkouts: both compute a hash over a serialized representation of the
directory, but they serialize the directory in a different way (SWH
serializes directories as Git trees, while Guix uses “normalized
archives” or Nars, the format the build daemon manipulates, which is
inherited from Nix.) That prevents Guix from looking up revisions by
content hash. The solution will probably involve changing Guix to
support the same method as Software Heritage, and/or adding Guixs method
to Software Heritage.&lt;/p&gt;&lt;p&gt;Having to wait for “cooking” completion can also be problematic. The
Software Heritage team is investigating the possibility to
&lt;a href=&quot;https://forge.softwareheritage.org/T1350&quot;&gt;automatically cook all version control
tags&lt;/a&gt;. That way, relevant
revisions would almost always be readily available through the vault.&lt;/p&gt;&lt;p&gt;Similarly, we have no guarantee that software provided by Guix is
available in the archive. Our plan is to &lt;a href=&quot;https://forge.softwareheritage.org/T1352&quot;&gt;extend Software
Heritage&lt;/a&gt; such that it would
periodically archive the source code of software packaged by Guix.&lt;/p&gt;&lt;h1&gt;Going further&lt;/h1&gt;&lt;p&gt;In the process of adding support for Software Heritage, Guix &lt;a href=&quot;https://issues.guix.info/issue/33432&quot;&gt;gained
Guile bindings to the Software Heritage HTTP
interface&lt;/a&gt;. Heres a couple of
things we can do:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(use-modules (guix swh))
;; Check whether SWH has ever crawled our repository.
(define o (lookup-origin &quot;https://git.savannah.gnu.org/git/guix.git&quot;))
⇒ #&amp;lt;&amp;lt;origin&amp;gt; id: 86312956 …&amp;gt;
;; It did! When was its last visit?
(define last-visit
(first (origin-visits o)))
(date-&amp;gt;string (visit-date last-visit))
&quot;Fri Mar 29 10:07:45Z 2019&quot;
;; Does it have our “v0.15.0” Git tag?
(lookup-origin-revision &quot;https://git.savannah.gnu.org/git/guix.git&quot; &quot;v0.15.0&quot;)
⇒ #&amp;lt;&amp;lt;revision&amp;gt; id: &quot;359fdda40f754bbf1b5dc261e7427b75463b59be&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Guix itself is a Guile library so when we combine the two, there are
interesting things we can do:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-scheme&quot;&gt;(use-modules (guix) (guix swh)
(gnu packages base)
(gnu packages golang))
;; This is our GNU Coreutils package.
coreutils
⇒ #&amp;lt;package coreutils@8.30 gnu/packages/base.scm:342 1c67b40&amp;gt;
;; Does SWH have its tarball?
(lookup-content (origin-sha256 (package-source coreutils))
&quot;sha256&quot;)
⇒ #&amp;lt;&amp;lt;content&amp;gt; checksums: ((&quot;sha1&quot; …)) data-url: …&amp;gt;
;; Our package for HashiCorps Configuration Language (HCL) is
;; built from a Git commit.
(define commit
(git-reference-commit
(origin-uri (package-source go-github-com-hashicorp-hcl))))
;; Is this particular commit available in the archive?
(lookup-revision commit)
⇒ #&amp;lt;&amp;lt;revision&amp;gt; id: &quot;23c074d0eceb2b8a5bfdbb271ab780cde70f05a8&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Were currently using a subset of this interface, but theres certainly
more we could do. For example, we can compute archive coverage of the
Guix packages; we can also request the archival of each packages source
code &lt;em&gt;via&lt;/em&gt; the &lt;a href=&quot;https://archive.softwareheritage.org/api/1/origin/save/&quot;&gt;“save code”
interface&lt;/a&gt;—though
all this is subject to &lt;a href=&quot;https://archive.softwareheritage.org/api/#rate-limiting&quot;&gt;rate
limiting&lt;/a&gt;.&lt;/p&gt;&lt;h1&gt;Wrap-up&lt;/h1&gt;&lt;p&gt;Software Heritage support in Guix creates a bridge from the stable
source code archive to reproducible software deployment with complete
provenance tracking. For the first time it gives us a software package
distribution that can be rebuilt months or years later. This is
particularly beneficial in the context of reproducible science: finally
we can describe reproducible software environments, a prerequisite for
reproducible computational experiments.&lt;/p&gt;&lt;p&gt;Going further, we can provide a complete software supply tool chain with
provenance tracking that links revisions in the archive to
bit-reproducible build artifacts produced by Guix. Oh and Guix itself
&lt;a href=&quot;https://archive.softwareheritage.org/api/1/origin/git/url/https://git.savannah.gnu.org/git/guix.git/&quot;&gt;is
archived&lt;/a&gt;,
so we have this meta-level where we could link Guix revisions to the
revisions of packages it provides… There are still technical challenges
to overcome, but that vision is shaping up.&lt;/p&gt;&lt;h4&gt;About GNU Guix&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/software/guix&quot;&gt;GNU Guix&lt;/a&gt; is a transactional package
manager and an advanced distribution of the GNU system that &lt;a href=&quot;https://www.gnu.org/distros/free-system-distribution-guidelines.html&quot;&gt;respects
user
freedom&lt;/a&gt;.
Guix can be used on top of any system running the kernel Linux, or it
can be used as a standalone operating system distribution for i686,
x86_64, ARMv7, and AArch64 machines.&lt;/p&gt;&lt;p&gt;In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection. When used as a standalone
GNU/Linux distribution, Guix offers a declarative, stateless approach to
operating system configuration management. Guix is highly customizable
and hackable through &lt;a href=&quot;https://www.gnu.org/software/guile&quot;&gt;Guile&lt;/a&gt;
programming interfaces and extensions to the
&lt;a href=&quot;http://schemers.org&quot;&gt;Scheme&lt;/a&gt; language.&lt;/p&gt;</content:encoded>
<dc:date>2019-03-29T14:50:00+00:00</dc:date>
<dc:creator>Ludovic Courtès</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9405">
<title>osip @ Savannah: osip2 [5.1.0] &amp; exosip2 [5.1.0]</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9405</link>
<content:encoded>&lt;p&gt;I have released today newer versions for both osip2 &amp;amp; exosip2.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;osip is very mature. There was only one tiny feature change to allow more flexible NAPTR request (such as ENUM). A very few bugs were discovered and fixed.
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;eXosip is also mature. However a few bugs around PRACK and retransmissions were reported and fixed. openssl support has also been updated to support more features, be more flexible and support all openssl versions. ENUM support has been introduced this year. See the ChangeLog for more!
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;In all case, upgrading is &lt;strong&gt;strongly&lt;/strong&gt; recommanded. API changes are documented in the ChangeLog: there is not much!&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-03-28T19:50:43+00:00</dc:date>
<dc:creator>Aymeric MOIZARD</dc:creator>
</item>
<item rdf:about="http://savannah.gnu.org/forum/forum.php?forum_id=9404">
<title>nano @ Savannah: GNU nano 4.0 was released</title>
<link>http://savannah.gnu.org/forum/forum.php?forum_id=9404</link>
<content:encoded>&lt;p&gt;This version breaks with the close compatibility with Pico: nano no longer hard-wraps the current line by default when it becomes overlong, and uses smooth scrolling by default, plus two other minor changes. Further, in 3.0 indenting and unindenting became undoable, and now, with 4.0, also justifications have become undoable (to any depth), making that all of the user&#39;s actions are now undoable and redoable (with the M-U and M-E keystrokes).&lt;br /&gt;
&lt;/p&gt;</content:encoded>
<dc:date>2019-03-27T18:36:29+00:00</dc:date>
<dc:creator>Benno Schulenberg</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/news/fsf-job-opportunity-campaigns-manager-1">
<title>FSF News: FSF job opportunity: campaigns manager</title>
<link>http://www.fsf.org/news/fsf-job-opportunity-campaigns-manager-1</link>
<content:encoded>&lt;p&gt;The Free Software Foundation (FSF), a Massachusetts 501(c)(3) charity with a worldwide mission to protect computer user freedom, seeks a motivated and talented Boston-based individual to be our full-time campaigns manager.&lt;/p&gt;
&lt;p&gt;Reporting to the executive director, the campaigns manager works on our campaigns team to lead, plan, carry out, evaluate, and improve the FSF&#39;s advocacy and education campaigns. The team also works closely with other FSF departments, including licensing, operations, and tech. The position will start by taking responsibility for existing campaigns in support of the GNU Project, free software adoption, free media formats, and freedom on the network; and against Digital Restrictions Management (DRM), software patents, and proprietary software.&lt;/p&gt;
&lt;p&gt;Examples of job responsibilities include, but are not limited to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Planning and participating in online and physical actions to
achieve our campaign goals;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Setting specific goals for each action and then measuring our
success in achieving them;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Doing the writing and messaging work needed to effectively explain
our campaigns and motivate people to support them;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Overseeing or doing the graphic design work to make our campaigns
and their Web sites attractive;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Supporting and attending special events, including
community-building activities and our annual LibrePlanet conference;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Assisting with annual online and mail fundraising efforts;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Working with our tech team on the technology choices and
deployments -- especially of Web publication systems like Drupal
and Plone -- for our campaign sites; and&lt;/li&gt;
&lt;li&gt;Being an approachable, humble, and friendly representative of the
FSF to our worldwide community of existing supporters and the
broader public, both in person and online.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ideal candidates have at least three to five years of work experience in online issue advocacy and free software; proficiency and comfort with professional writing and publications preferred. Because the FSF works globally and seeks to have our materials distributed in as many languages as possible, multilingual candidates will have an advantage. With our small staff of fourteen, each person makes a clear contribution. We work hard, but offer a humane and fun work environment at an office located in the heart of downtown Boston. The FSF is a mature but growing organization that provides great potential for advancement; existing staff get the first chance at any new job openings.&lt;/p&gt;
&lt;h2&gt;Benefits and salary&lt;/h2&gt;
&lt;p&gt;This job is a union position that must be worked on-site at the FSF&#39;s downtown Boston office. The salary is fixed at $63,253/year and is non-negotiable. Other benefits include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full individual or family health coverage through Blue Cross/Blue Shield&#39;s HMO Blue program;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Subsidized dental plan;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Four weeks of paid vacation annually;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Seventeen paid holidays annually;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Weekly remote work allowance;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Public transit commuting cost reimbursement;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;403(b) program through TIAA with employer match;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Yearly cost-of-living pay increases (based on government guidelines);&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Healthcare expense reimbursement budget;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Ergonomic budget;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Relocation (to Boston area) expense reimbursement;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Conference travel and professional development opportunities; and&lt;/li&gt;
&lt;li&gt;Potential for an annual performance bonus.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Application instructions&lt;/h2&gt;
&lt;p&gt;Applications must be submitted via email to &lt;a href=&quot;mailto:hiring@fsf.org&quot;&gt;hiring@fsf.org&lt;/a&gt;. The email must contain the subject line &quot;Campaigns manager&quot;. A complete application should include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cover letter, including a brief example of a time you motivated and organized others to take action on an issue important to you;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Resume;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Two recent writing samples;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Links to any talks you have given (optional); and&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Graphic design samples (optional).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All materials must be in a free format (such as plain text, PDF, or OpenDocument). Email submissions that do not follow these instructions will probably be overlooked. No phone calls, please.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Applications will be reviewed on a rolling basis until the position is filled. To guarantee consideration, submit your application by Sunday, April 28th.&lt;/strong&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The FSF is an equal opportunity employer and will not discriminate against any employee or application for employment on the basis of race, color, marital status, religion, age, sex, sexual orientation, national origin, handicap, or any other legally protected status recognized by federal, state or local law. We value diversity in our workplace. &lt;/p&gt;
&lt;h3&gt;About the Free Software Foundation&lt;/h3&gt;
&lt;p&gt;The Free Software Foundation, founded in 1985, is dedicated to promoting computer users&#39; right to use, study, copy, modify, and redistribute computer programs. The FSF promotes the development and use of free (as in freedom) software -- particularly the GNU operating system and its GNU/Linux variants -- and free documentation for free software. The FSF also helps to spread awareness of the ethical and political issues of freedom in the use of software, and its Web sites, located at fsf.org and gnu.org, are an important source of information about GNU/Linux. Donations to support the FSF&#39;s work can be made at &lt;a href=&quot;https://donate.fsf.org&quot;&gt;https://donate.fsf.org&lt;/a&gt;. We are based in Boston, MA, USA.&lt;/p&gt;</content:encoded>
<dc:date>2019-03-25T20:15:00+00:00</dc:date>
<dc:creator>FSF News</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/news/openstreetmap-and-deborah-nicholson-win-2018-fsf-awards">
<title>FSF News: OpenStreetMap and Deborah Nicholson win 2018 FSF Awards</title>
<link>http://www.fsf.org/news/openstreetmap-and-deborah-nicholson-win-2018-fsf-awards</link>
<content:encoded>&lt;p&gt;&lt;em&gt;BOSTON, Massachusetts, USA -- Saturday, March 23, 2019 -- The Free
Software Foundation (FSF) recognizes &lt;a href=&quot;https://www.openstreetmap.org/&quot;&gt;OpenStreetMap&lt;/a&gt; with the 2018
Free Software Award for Projects of Social Benefit and Deborah
Nicholson with the Award for the Advancement of Free Software. FSF
president Richard M. Stallman presented the awards today in a yearly
ceremony during the LibrePlanet 2019 conference at the Massachusetts
Institute of Technology (MIT).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.fsf.org/awards/sb-award/&quot;&gt;Award for Projects of Social Benefit&lt;/a&gt; is presented to a
project or team responsible for applying free software, or the ideas
of the free software movement, to intentionally and significantly
benefit society. This award stresses the use of free software in
service to humanity.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Richard Stallman with Free Software Awards winners Deborah Nicholson and Kate Chapman&quot; src=&quot;https://static.fsf.org/nosvn/libreplanet/2019/photos/free-software-awards/both.jpg&quot; style=&quot;float: right; width: 250px; margin: 10px 0px 10px 10px;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;This year the FSF awarded OpenStreetMap and the award was accepted by
Kate Chapman, chairperson of the OpenStreetMap Foundation and
co-founder of the Humanitarian OpenStreetMap Team (HOT).&lt;/p&gt;
&lt;p&gt;OpenStreetMap is a collaborative project to create a free editable map
of the world. Founded by Steve Coast in the UK in 2004, OpenStreetMap
is built by a community of over one million community members and has
found its application on thousands of Web sites, mobile apps, and
hardware devices. OpenStreetMap is the only truly global service
without restrictions on use or availability of map information.&lt;/p&gt;
&lt;p&gt;Stallman emphasized the importance of OpenStreetMap in a time where
geotech and geo-thinking are highly prevalent. &quot;It has been clear for
decades that map data are important. Therefore we need a free
collection of map data. The name OpenStreetMap doesn&#39;t say so
explicitly, but its map data is free. It is the free replacement that
the Free World needs.&quot;&lt;/p&gt;
&lt;p&gt;Kate thanked the Free Software Foundation and the large community of
contributors of OpenStreetMap. &quot;In 2004, much of the geospatial data
was either extraordinarily expensive or unavailable. Our strong
community of people committed to free and open map information has
changed that. Without the leadership before us from groups such as the
Free Software Foundation, we would not have been able to grow and
develop to the resource we are today.&quot;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.fsf.org/awards/fs-award&quot;&gt;Award for the Advancement of Free Software&lt;/a&gt; goes to an
individual who has made a great contribution to the progress and
development of free software through activities that accord with the
spirit of free software.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Richard Stallman presenting Free Software Award to Deborah Nicholson&quot; src=&quot;https://static.fsf.org/nosvn/libreplanet/2019/photos/free-software-awards/deb.jpg&quot; style=&quot;float: right; width: 250px; margin: 10px 0px 10px 10px;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;This year it was presented to Deborah Nicholson, who, motivated by the
intersection of technology and social justice, advocates access to
political information, unfettered freedom of speech and assembly, and
civil liberties in our increasingly digital world. She joined the free
software movement in 2006 after years of local organizing for free
speech, marriage equality, government transparency and access to the
political process. The Free Software Foundation recognizes her as an
exceptional opinion leader, activist and community advocate.&lt;/p&gt;
&lt;p&gt;Deborah is the director of community operations at the &lt;a href=&quot;https://sfconservancy.org&quot;&gt;Software
Freedom Conservancy&lt;/a&gt;, where she supports the work of its member
organizations and facilitates collaboration with the wider free
software community. She has served as the membership coordinator for
the &lt;a href=&quot;https://www.fsf.org&quot;&gt;Free Software Foundation&lt;/a&gt;, where she created the Women&#39;s
Caucus to increase recruitment and retention of women in the free
software community. She has been widely recognized for her volunteer
work with &lt;a href=&quot;https://mediagoblin.org/&quot;&gt;GNU MediaGoblin&lt;/a&gt;, a federated media-publishing platform,
and &lt;a href=&quot;https://blog.openhatch.org/2017/celebrating-our-successes-and-winding-down-as-an-organization/&quot;&gt;OpenHatch&lt;/a&gt;, free software&#39;s welcoming committee. She continues
her work as a founding organizer of the &lt;a href=&quot;http://seagl.org/&quot;&gt;Seattle GNU/Linux
Conference&lt;/a&gt;, an annual event dedicated to surfacing new voices and
welcoming new people to the free software community.&lt;/p&gt;
&lt;p&gt;Stallman praised her body of work and her unremitting and widespread
contributions to the free software community. &quot;Deborah continuously
reaches out to, and engages, new audiences with her message on the
need for free software in any version of the future.&quot;&lt;/p&gt;
&lt;p&gt;Deborah continued: &quot;Free software is critically important for
autonomy, privacy and a healthy democracy -- but it can&#39;t achieve that
if it is only accessible for some, or if it is alienating for large
swathes of people. That&#39;s why it&#39;s so important that we continue
surfacing new voices, making room for non-coders and welcoming new
contributors into the free software community. I also find that in
addition to helping us build a better, bigger movement, the work of
welcoming is extremely rewarding.&quot;&lt;/p&gt;
&lt;p&gt;Nominations for both awards are submitted by members of the public,
then evaluated by an award committee composed of previous winners and
FSF founder and president Richard Stallman.&lt;/p&gt;
&lt;p&gt;More information about both awards, including the full list of
previous winners, can be found at &lt;a href=&quot;https://www.fsf.org/awards&quot;&gt;https://www.fsf.org/awards&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;em&gt;About the Free Software Foundation&lt;/em&gt;&lt;/h1&gt;
&lt;p&gt;The Free Software Foundation, founded in 1985, is dedicated to
promoting computer users&#39; right to use, study, copy, modify, and
redistribute computer programs. The FSF promotes the development and
use of free (as in freedom) software -- particularly the GNU operating
system and its GNU/Linux variants -- and free documentation for free
software. The FSF also helps to spread awareness of the ethical and
political issues of freedom in the use of software, and its Web sites,
located at &lt;a href=&quot;https://fsf.org&quot;&gt;https://fsf.org&lt;/a&gt; and &lt;a href=&quot;https://gnu.org&quot;&gt;https://gnu.org&lt;/a&gt;, are an important
source of information about GNU/Linux. Donations to support the FSF&#39;s
work can be made at &lt;a href=&quot;https://my.fsf.org/donate&quot;&gt;https://my.fsf.org/donate&lt;/a&gt;. Its headquarters are
in Boston, MA, USA.&lt;/p&gt;
&lt;p&gt;More information about the FSF, as well as important information for
journalists and publishers, is at &lt;a href=&quot;https://www.fsf.org/press&quot;&gt;https://www.fsf.org/press&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;em&gt;Media Contacts&lt;/em&gt;&lt;/h1&gt;
&lt;p&gt;John Sullivan &lt;br /&gt;
Executive Director &lt;br /&gt;
Free Software Foundation &lt;br /&gt;
+1 (617) 542 5942 &lt;br /&gt;
&lt;a href=&quot;mailto:campaigns@fsf.org&quot;&gt;campaigns@fsf.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo credits: Copyright Š 2019 Madi Muhlberg, photos licensed under CC-BY 4.0.&lt;/em&gt;&lt;/p&gt;</content:encoded>
<dc:date>2019-03-23T23:30:00+00:00</dc:date>
<dc:creator>FSF News</dc:creator>
</item>
<item rdf:about="http://www.fsf.org/news/openstreetmap-and-deborah-nicholson-win-2019-fsf-awards">
<title>FSF News: OpenStreetMap and Deborah Nicholson win 2019 FSF Awards</title>
<link>http://www.fsf.org/news/openstreetmap-and-deborah-nicholson-win-2019-fsf-awards</link>
<content:encoded>&lt;p&gt;&lt;em&gt;BOSTON, Massachusetts, USA -- Saturday, March 23, 2019-- The Free
Software Foundation (FSF) recognizes &lt;a href=&quot;https://www.openstreetmap.org/&quot;&gt;OpenStreetMap&lt;/a&gt; with the 2018
Free Software Award for Projects of Social Benefit and Deborah
Nicholson with the Award for the Advancement of Free Software. FSF
president Richard M. Stallman presented the awards today in a yearly
ceremony during the LibrePlanet 2019 conference at the Massachusetts
Institute of Technology (MIT).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.fsf.org/awards/sb-award/&quot;&gt;Award for Projects of Social Benefit&lt;/a&gt; is presented to a
project or team responsible for applying free software, or the ideas
of the free software movement, to intentionally and significantly
benefit society. This award stresses the use of free software in
service to humanity.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Richard Stallman with Free Software Awards winners Deborah Nicholson and Kate Chapman&quot; src=&quot;https://static.fsf.org/nosvn/libreplanet/2019/photos/free-software-awards/both.jpg&quot; style=&quot;float: right; width: 250px; margin: 10px 0px 10px 10px;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;This year the FSF awarded OpenStreetMap and the award was accepted by
Kate Chapman, chairperson of the OpenStreetMap Foundation and
co-founder of the Humanitarian OpenStreetMap Team (HOT).&lt;/p&gt;
&lt;p&gt;OpenStreetMap is a collaborative project to create a free editable map
of the world. Founded by Steve Coast in the UK in 2004, OpenStreetMap
is built by a community of over one million community members and has
found its application on thousands of Web sites, mobile apps, and
hardware devices. OpenStreetMap is the only truly global service
without restrictions on use or availability of map information.&lt;/p&gt;
&lt;p&gt;Stallman emphasized the importance of OpenStreetMap in a time where
geotech and geo-thinking are highly prevalent. &quot;It has been clear for
decades that map data are important. Therefore we need a free
collection of map data. The name OpenStreetMap doesn&#39;t say so
explicitly, but its map data is free. It is the free replacement that
the Free World needs.&quot;&lt;/p&gt;
&lt;p&gt;Kate thanked the Free Software Foundation and the large community of
contributors of OpenStreetMap. &quot;In 2004, much of the geospatial data
was either extraordinarily expensive or unavailable. Our strong
community of people committed to free and open map information has
changed that. Without the leadership before us from groups such as the
Free Software Foundation, we would not have been able to grow and
develop to the resource we are today.&quot;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.fsf.org/awards/fs-award&quot;&gt;Award for the Advancement of Free Software&lt;/a&gt; goes to an
individual who has made a great contribution to the progress and
development of free software through activities that accord with the
spirit of free software.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Richard Stallman presenting Free Software Award to Deborah Nicholson&quot; src=&quot;https://static.fsf.org/nosvn/libreplanet/2019/photos/free-software-awards/deb.jpg&quot; style=&quot;float: right; width: 250px; margin: 10px 0px 10px 10px;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;This year it was presented to Deborah Nicholson, who, motivated by the
intersection of technology and social justice, advocates access to
political information, unfettered freedom of speech and assembly, and
civil liberties in our increasingly digital world. She joined the free
software movement in 2006 after years of local organizing of free
speech, marriage equality, government transparency and access to the
political process. The Free Software Foundation recognizes her as an
exceptional opinion leader, activist and community advocate.&lt;/p&gt;
&lt;p&gt;Deborah is the director of community operations at the &lt;a href=&quot;https://sfconservancy.org&quot;&gt;Software
Freedom Conservancy&lt;/a&gt;, where she supports the work of its member
organizations and facilitates collaboration with the wider free
software community. She has served as the membership coordinator for
the &lt;a href=&quot;https://www.fsf.org&quot;&gt;Free Software Foundation&lt;/a&gt;, where she created the Women&#39;s
Caucus to increase recruitment and retention of women in the free
software community. She has been widely recognized for her volunteer
work with &lt;a href=&quot;https://mediagoblin.org/&quot;&gt;GNU MediaGoblin&lt;/a&gt;, a federated media-publishing platform,
and &lt;a href=&quot;https://blog.openhatch.org/2017/celebrating-our-successes-and-winding-down-as-an-organization/&quot;&gt;OpenHatch&lt;/a&gt;, free software&#39;s welcoming committee. She continues
her work as a founding organizer of the &lt;a href=&quot;http://seagl.org/&quot;&gt;Seattle GNU/Linux
Conference&lt;/a&gt;, an annual event dedicated to surfacing new voices and
welcoming new people to the free software community.&lt;/p&gt;
&lt;p&gt;Stallman praised her body of work and her unremitting and widespread
contributions to the free software community. &quot;Deborah continuously
reaches out to, and engages, new audiences with her message on the
need for free software in any version of the future.&quot;&lt;/p&gt;
&lt;p&gt;Deborah continued: &quot;Free software is critically important for
autonomy, privacy and a healthy democracy -- but it can&#39;t achieve that
if it is only accessible for some, or if it is alienating for large
swathes of people. That&#39;s why it&#39;s so important that we continue
surfacing new voices, making room for non-coders and welcoming new
contributors into the free software community. I also find that in
addition to helping us build a better, bigger movement, the work of
welcoming is extremely rewarding.&quot;&lt;/p&gt;
&lt;p&gt;Nominations for both awards are submitted by members of the public,
then evaluated by an award committee composed of previous winners and
FSF founder and president Richard Stallman.&lt;/p&gt;
&lt;p&gt;More information about both awards, including the full list of
previous winners, can be found at &lt;a href=&quot;https://www.fsf.org/awards&quot;&gt;https://www.fsf.org/awards&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;em&gt;About the Free Software Foundation&lt;/em&gt;&lt;/h1&gt;
&lt;p&gt;The Free Software Foundation, founded in 1985, is dedicated to
promoting computer users&#39; right to use, study, copy, modify, and
redistribute computer programs. The FSF promotes the development and
use of free (as in freedom) software -- particularly the GNU operating
system and its GNU/Linux variants -- and free documentation for free
software. The FSF also helps to spread awareness of the ethical and
political issues of freedom in the use of software, and its Web sites,
located at &lt;a href=&quot;https://fsf.org&quot;&gt;https://fsf.org&lt;/a&gt; and &lt;a href=&quot;https://gnu.org&quot;&gt;https://gnu.org&lt;/a&gt;, are an important
source of information about GNU/Linux. Donations to support the FSF&#39;s
work can be made at &lt;a href=&quot;https://my.fsf.org/donate&quot;&gt;https://my.fsf.org/donate&lt;/a&gt;. Its headquarters are
in Boston, MA, USA.&lt;/p&gt;
&lt;p&gt;More information about the FSF, as well as important information for
journalists and publishers, is at &lt;a href=&quot;https://www.fsf.org/press&quot;&gt;https://www.fsf.org/press&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;em&gt;Media Contacts&lt;/em&gt;&lt;/h1&gt;
&lt;p&gt;John Sullivan &lt;br /&gt;
Executive Director &lt;br /&gt;
Free Software Foundation &lt;br /&gt;
+1 (617) 542 5942 &lt;br /&gt;
&lt;a href=&quot;mailto:campaigns@fsf.org&quot;&gt;campaigns@fsf.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Photo credits: Copyright Š 2019 Madi Muhlberg, photos licensed under CC-BY 4.0.&lt;/em&gt;&lt;/p&gt;</content:encoded>
<dc:date>2019-03-23T22:59:48+00:00</dc:date>
<dc:creator>FSF News</dc:creator>
</item>
</rdf:RDF>