Planet GNU

Aggregation of development blogs from the GNU Project

October 04, 2018

GNU Guix

Join GNU Guix through Outreachy

We are happy to announce that for the second time this year, GNU Guix offers a three-month internship through Outreachy, the inclusion program for groups traditionally underrepresented in free software and tech. We currently propose one subject to work on:

  1. Create user video documentation for GNU Guix.

Eligible persons should apply by November 22th.

If you’d like to contribute to computing freedom, Scheme, functional programming, or operating system development, now is a good time to join us. Let’s get in touch on the mailing lists and on the #guix channel on the Freenode IRC network!

About GNU Guix

GNU Guix is a transactional package manager for the GNU system. The Guix System Distribution or GuixSD is an advanced distribution of the GNU system that relies on GNU Guix and respects the user's freedom.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix uses low-level mechanisms from the Nix package manager, except that packages are defined as native Guile modules, using extensions to the Scheme language. GuixSD offers a declarative approach to operating system configuration management, and is highly customizable and hackable.

GuixSD can be used on i686, x86_64, and armv7 machines. It is also possible to use Guix on top of an already installed GNU/Linux system, including on mips64el and aarch64.

04 October, 2018 08:00AM by Gábor Boskovits

October 03, 2018

FSF Events

John Sullivan - "How can free communication tools win?" (freenode #live, Bristol, UK)

FSF executive director John Sullivan will be speaking at freenode #live (2018-11-03–4).

The free software movement aims to have all software be free “as in freedom.” But communication tools are especially important, because they are fundamental to the movement’s infrastructure, and its self image. We are supposed to be the experts in distributed, online collaboration. Communication and collaboration tools are also where we have had some of our greatest disappointments and challenges in recent years – consider the popularity and subsequent network effects of tools like Skype, Slack, WhatsApp, and Facebook Messenger. Can free tools – IRC, XMPP, GNU Ring, WebRTC, and others – overcome or even just compete with the network effect of the proprietary platforms? If so, how? What’s the current state of affairs and what should we be focusing on?

Location: We The Curious (formerly At-Bristol Science Centre) , Bristol, UK

We hope you can attend the speech, or meet John at the conference, or visit us at the FSF booth.

Please fill out our contact form, so that we can contact you about future events in and around Bristol.

03 October, 2018 04:59PM

Molly de Blanc - "Insecure Connections: Love and mental health in our digital lives" (SeaGL, Seattle, WA)

FSF campaigns manager Molly de Blanc will be speaking at SeaGL (2018-11-09–10).

The lens through which we view--and know--what it means to love, to be ourselves, and to connect with others is now backed by microchips and millions of lines of code. As our lives continue to become increasingly managed by our devices, we need to ask ourselves what we're gaining--and what we're giving up--by allowing technology into the spaces that make our hearts ache and that keep us up at night.

This talk will weave together two narratives essential to many people: health and love. It will examine the ways in which both of these topics have become entwined with computing, what that means for us as individuals, and what that means for our individual and societal user freedoms.

Location: Theatre, Seattle Central College, Seattle, WA

We hope you can attend the speech, or meet Molly at the conference, or visit us at the FSF booth.

Please fill out our contact form, so that we can contact you about future events in and around Seattle.

03 October, 2018 04:50PM

FSF Blogs

Thank you for participating in International Day Against DRM 2018!

idad poster

Thank you everyone for helping to make September 18th another successful International Day Against DRM (IDAD)! Digital Restrictions Management (DRM) is an issue we have to face every day. In rallying together for a single day against DRM, we sent a powerful message: DRM is just wrong and we can live in a society without it.

Hundreds of you around the world took action on IDAD: going out into your campuses, communities, and around the Web, and sharing your opposition to how DRM restricts your freedom as a user of software and media. The 17 participating organizations took their own actions, creating videos, releasing reports, and writing articles. Here in Boston, we visited the Apple Store and talked with shoppers about their digital rights and how Apple devices abuse those rights using DRM.

Even though IDAD 2019 is a year away, you can continue taking action against DRM. You can join the DRM Elimination crew and sign up for the Defective by Design email list on DefectiveByDesign.org. You can follow us on social media or join the discussion on IRC on the channel #DefectiveByDesign.

We appreciate everything you did this year, and want to give one last big thank you to everyone who was involved.

Thank you!

Photo courtesy of rafial on Flickr. This image is licensed under a CC BY SA 2.0 license.

03 October, 2018 03:20PM

October 02, 2018

FSF Events

Rubén Rodríguez - "Freedom and privacy in the Web: Fighting licensing, tracking, fingerprinting and other issues, from both sides of the cable" (SeaGL, Seattle, WA)

FSF senior systems administrator Rubén Rodríguez will be speaking at SeaGL (2018-11-09–10). The talk will be somewhat technical; the public is encouraged to attend.

Websites and the technologies they are built on continue to evolve from the static text documents of old (with the occasional image, tiled background and blinking marquee) to very elaborate pieces of interactive software, with both local and remote code execution that brings all kinds of overlooked privacy and user freedom concerns. Fueled by practicality and monetization incentives, web developers regularly impose non-free JavaScript to their visitors, who also have to suffer being tracked and fingerprinted by all kinds of third parties.

In this talk we will explore the sometimes obscure issues at play, and we will discuss tools and practices for end users to protect their freedom and privacy when browsing the Web, and for site developers to be able to offer an interactive, feature-rich experience to their visitors in freedom-respecting ways.

Attendees will learn about the JavaScript Trap and its solutions, as well as fingerprinting and other forms of browser tracking, and how to work around those and other issues from both the visitor and the webmaster side.

Location: Room 5104, Seattle Central College, Seattle, WA

We hope you can attend the speech, or meet Rubén at the conference, or visit us at the FSF booth.

Please fill out our contact form, so that we can contact you about future events in and around Seattle.

02 October, 2018 09:44AM

September 29, 2018

GNU Guix

Upcoming Talk: "Everyday Use of GNU Guix"

At SeaGL 2018, Chris Marusich will present a talk introducing GNU Guix to people of all skill levels and backgrounds. SeaGL is an annual GNU/Linux conference in Seattle. Attendance is gratis.

If you're in the Seattle area, please consider coming! Even if you can't make it in person, the talk will be recorded and later made available on the SeaGL website, so you can watch it at your convenience after it's been uploaded.

Abstract

Everyday Use of GNU Guix

In this talk, I will introduce GNU Guix: a liberating, dependable, and hackable package manager that follows the "purely functional software deployment model" pioneered by Nix.

I will demonstrate some common use cases of Guix and show you how I use it in my everyday life. In addition, I will briefly explain the basic idea behind the functional model and how it enables Guix to provide useful features like the following:

  • Transactional upgrades and roll-back of installed software.
  • Unprivileged users can simultaneously install multiple versions of software.
  • Transparently build from source or download pre-built binaries.
  • Installed software is bootstrappable, trustable, and auditable all the way down to your compiler's compiler.
  • Eliminates an entire class of "works on my system" type problems.

No prior knowledge of Guix, Nix, or the functional model is required. When you leave this talk, I hope you will have a basic understanding of what Guix is, how to use it, and why it will help make your life brighter.

Schedule

The talk will take place at the following time and location:

For details, please refer to the official SeaGL page for the talk.

About GNU Guix

GNU Guix is a transactional package manager for the GNU system. The Guix System Distribution or GuixSD is an advanced distribution of the GNU system that relies on GNU Guix and respects the user's freedom.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix uses low-level mechanisms from the Nix package manager, except that packages are defined as native Guile modules, using extensions to the Scheme language. GuixSD offers a declarative approach to operating system configuration management, and is highly customizable and hackable.

GuixSD can be used on an i686, x86_64 and armv7 machines. It is also possible to use Guix on top of an already installed GNU/Linux system, including on mips64el and aarch64.

29 September, 2018 03:00PM by Chris Marusich

Riccardo Mottola

first release of StepSync!

I'm proud to announce the first release of StepSync, a file sync tool for GNUstep and MacOS (even for venerable PowerPC).

StepSync allows synchronization of folders, optionally recursively descending in sub-folders. It allows thus various options of performing backups: pure insertion, updates and including full synchronization by importing changes from target to source.

After months of development and testing, I consider it stable enough, I tested it with thousands of files and folders.

You can find it at the GNUstep Application Project. I already have plans for new features!

29 September, 2018 11:04AM by Riccardo (noreply@blogger.com)

September 27, 2018

FSF Blogs

GNU Spotlight with Mike Gerwitz: 15 new GNU releases!

For announcements of most new GNU releases, subscribe to the info-gnu mailing list: https://lists.gnu.org/mailman/listinfo/info-gnu.

To download: nearly all GNU software is available from https://ftp.gnu.org/gnu/, or preferably one of its mirrors from https://www.gnu.org/prep/ftp.html. You can use the url https://ftpmirror.gnu.org/ to be automatically redirected to a (hopefully) nearby and up-to-date mirror.

A number of GNU packages, as well as the GNU operating system as a whole, are looking for maintainers and other assistance: please see https://www.gnu.org/server/takeaction.html#unmaint if you'd like to help. The general page on how to help GNU is at https://www.gnu.org/help/help.html.

If you have a working or partly working program that you'd like to offer to the GNU project as a GNU package, see https://www.gnu.org/help/evaluation.html.

As always, please feel free to write to us at maintainers@gnu.org with any GNUish questions or suggestions for future installments.

27 September, 2018 03:19PM

September 26, 2018

FSF Events

Richard Stallman - "Computing, Freedom and Privacy" (Turin, Italy)

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?

This speech by Richard Stallman will be in English. It will be nontechnical, admission is gratis, and the public is encouraged to attend.

Location: Computer Science Department, Corso Svizzera 185 Torino (in the "Piero della Francesca" Business Center; entrance from Via Pessinetto 12), Turin, Italy

Please fill out our contact form, so that we can contact you about future events in and around Turin.

26 September, 2018 12:58PM

September 25, 2018

dico @ Savannah

Version 2.7

Version 2.7 of GNU dico is available for download.

Important changes in this version:

1. Support for virtual databases
2. The dictorg module improved
3. Support for building with WordNet on Debian-based systems
4. Default m4 quoting characters changed to [ ]
5. Dicoweb: graceful handling of unsupported content types.

25 September, 2018 04:27PM by Sergey Poznyakoff

September 22, 2018

parallel @ Savannah

GNU Parallel 20180922 ('Danske') released [stable]

GNU Parallel 20180922 ('Danske') [stable] has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/

No new functionality was introduced so this is a good candidate for a stable release.

Quote of the month:

I know I'm late to the party but GNU Parallel is truly amazing!
-- Sam Diaz-Munoz @sociovirology

New in this release:

  • Minix is supported again.
  • Bug fixes and man page updates.

Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

GNU Parallel - For people who live life in the parallel lane.

About GNU Parallel

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.

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.

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.

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with: (wget -O - pi.dk/3 || curl pi.dk/3/) | bash

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your commandline will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use --citation)

If GNU Parallel saves you money:

About GNU SQL

GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' 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.

The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload

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.

22 September, 2018 09:15PM by Ole Tange

September 21, 2018

FSF Blogs

Sonali's Internship work on the Free Software Directory, part 2

For context, see the previous blog post, Sonali's Progress on the Free Software Directory, weeks 1-2

Also, by the time this blog was published, more progress has been made. Stay tuned for more updates.

Mobile view project

I made the licenses section of the Directory mobile-friendly by:

  • Changing table tags to divs.
  • Using media queries and mobileonly and nomobile tags that are provided by the MobileDetect extension to enable vertical table view for small screens.
  • Using if statements to hide headings for table cells with no content in mobile view.

I added a mobile-friendly logo in the header and footer by adding $wgMFCustomLogos in LocalSettings.php.

Mediawiki Upgrade

I took up the task of upgrading Free Software Directory from MediaWiki version 1.27 to 1.31. This version is a long-term stable release of MediaWiki. This project has been a great opportunity for me to learn things like importing MySQL database and troubleshooting site issues on a GNU/Linux server.

MediaWiki version 1.31 comes with more bundled extensions than in version 1.27, like a code editor and a mobile-friendly Timeless skin. I spent my time this week trying to get the site to work correctly, importing the wiki database, and then setting up a new wiki on the development server.

To begin upgrading the wiki, I went through upgrade instructions given in https://www.mediawiki.org/wiki/Manual:Upgrading, and then I downloaded the files for the new release locally and performed a GPG signature check on tar file using their public keys and signature available at https://lists.wikimedia.org/pipermail/mediawiki-announce/2018-June/000221.html. After verifying that the file is secure, I decompressed the tarball in /var/www. I went through the release notes of versions between 1.27 and 1.31, to get an idea of the changes that were made. Then I created a user in MySQL and used myloader to import the wiki database. The site wasn’t working so I checked for errors in Apache by checking error logs and used netstat and netcat to check if the Web server is running properly. After fixing a few other bugs, the site began working correctly. Then I set up the new MediaWiki installation, added new versions of extensions in the extensions directory, and added older customizations of the Vector module to the new code.

Things I plan to work on in the coming weeks

  1. Modify the Vector module further to obtain correct arrangement of content in the wiki.
  2. Add semantic MediaWiki extensions to the new installation.

21 September, 2018 02:55PM

David's internship work on the Free Software Directory, part 2

For context, see the previous blog post, David's Progress on the Free Software Directory, weeks 2-3

Also, by the time this blog was published, more progress has been made. Stay tuned for more updates!

IceCat

Over this period, I worked on various GNU IceCat related issues. IceCat's new API for extensions, called WebExtensions, means that many legacy extensions will soon no longer work on a supported browser and will be for historical reference only. There were some that had never been approved for inclusion in the Directory. We generally don't approve new entries that are only for historical reference, so I deleted them. I deleted IceCatMobile and related addons because we don't list Android apps. I started a buggy entries page to address Mozilla brand name issues in Directory entries. For example, "Firefox" should almost always be replaced with "IceCat."

Pywikibot

I learned how to use Pywikibot to import entries to the Directory with the generous help of a Pywikibot developer over the course of a few days. He wrote a patch to fix an issue that prevented sites other than Wikipedia from being written to a configuration file. Since the Free Software Directory uses CASAuth for login, we did some work to get pywikibot automated login working. I wrote documentation on how to set up Pywikibot to upload files to the Directory.

IceCat addons

I made general improvements and bug fixes to my addons.mozilla.org (AMO)/FSD sync script. For example, I made it clean the titles from AMO for punctuation and other issues so we could reuse them for the Directory. I added the API variable "platform=linux" to the URI to avoid add-ons that only work with Windows.

21 September, 2018 02:55PM

September 20, 2018

Parabola GNU/Linux-libre

Server loss

The rather long outage (2018-08-27 through 2018-09-18; 22 days) of the proton.parabola.nu server has been resolved, with all services being migrated to winston.parabola.nu. Please notify us if you encounter any lingering issues.

We'd like to specifically thank Jonathan "n1md4" Gower for graciously hosting us at Positive Internet all these years--since before most of us were even Parabola users, let alone contributors.

However, that sponsorship has come to an end. We are alright for now; the server that 1984 Hosting is sponsoring us with is capable of covering our immediate needs. We are looking for a replacement server and are favoring a proprietor that is a "friend of freedom," if anyone in the community has a suggestion.

20 September, 2018 03:45PM by Luke Shumaker

September 19, 2018

Boot problems with Linux-libre 4.18 on older CPUs

Due to a known bug in upstream Linux 4.18, users with older multi-core x86 CPUs (Core 2 Duo and earlier?) may not correctly boot up with linux-libre 4.18 when using the default clocksource.

If you are affected, and the CPU is new enough to support HPET, you may work around this by adding clocksource=hpet to the kernel command line. GRUB users can accomplish this by inserting GRUB_CMDLINE_LINUX_DEFAULT+=" clocksource=hpet" in to /etc/default/grub and re-running grub-mkconfig.

If your CPU is too old to support HPET, you may work around this by using the linux-libre-lts (4.14) kernel instead of linux-libre (4.18).

As this is fixed in 4.18.9, you may also want to wait for a package update.

19 September, 2018 09:33PM by Luke Shumaker

FSF Events

Richard Stallman - « Libertad de usuario, libertad del lector » (Burgos, Spain)

Esa charla de Richard Stallman formará parte del III Foro de Cultura (2019-11-09–11). La charla no será técnica y la entrada será gratis; todos están invitados a asistir.

El título de la charla será determinado.

Lugar: Plaza de la Libertad, Burgos, España

Favor de rellenar este formulario, para que podamos contactarle acerca de eventos futuros en la región de Burgos.

19 September, 2018 12:40PM

September 17, 2018

FSF News

FSF takes international day of action for a Day Without DRM on September 18th

On Tuesday, September 18th, there will be two rallies in Boston – one from 12:00pm - 2:00pm at the Boston Public Library at 700 Boylston Street, and one from 6:00pm - 7:00pm in front of the Apple Store at 815 Boylston Street.

DRM is the practice of imposing technological restrictions that control what users can do with digital media. DRM creates a damaged good: it prevents you from doing what would be possible without it. This concentrates control over production and distribution of media, giving DRM peddlers the power to carry out massive digital book-burnings and conduct large-scale surveillance over people's media viewing habits.

Organized by the Defective by Design team, IDAD has occurred annually since 2006. Each year, participants take action through protests, rallies, and the sharing of DRM-free media and materials. Participating nonprofits, activist groups, and companies from around the world include the Electronic Frontier Foundation, Open Rights Group, Public Knowledge, The Document Foundation, and others (for a complete list, see: https://dayagainstdrm.org). These groups will share the message by writing about why DRM is harmful, organizing events, and offering discounts on DRM-free media.

"DRM is a major problem for computer user freedom, artistic expression, free speech, and media," said John Sullivan, executive director of the FSF. "International Day Against DRM has allowed us to, year after year, empower people to rise up together and in one voice declare that DRM is harmful to everyone."

This year's theme is A Day Without DRM – the FSF invites people around the world to avoid DRM for the day. DRM is lurking in many electronic devices we use, both online and offline, and you'll find it everywhere from media files to vehicles. Its impact is echoed in the fight for the Right to Repair and the fight for the right to investigate the software in medical devices. Examples of flagrant DRM abuses include:

  • In a classic example from 2009, Amazon remotely deleted thousands of copies of George Orwell's 1984 from Kindle ebook readers. Given this power, corporations like Amazon could fully disappear a book from existence if they chose, committing a massive digital book-burning. Amazon still has the power to do this, and has remotely deleted at least one user's library since then.

  • A US law called the Digital Millennium Copyright Act (DMCA) makes it illegal to remove DRM from media using widely-available online tools. These policies have a chilling effect among security researchers, those who wish to repair their devices, and anyone who wants to understand how their technologies work.

  • Media companies including Netflix pressured the World Wide Web Consortium to add DRM as a Web standard, normalizing DRM and giving it the opportunity to become even more prevalent.

DRM-supporting companies and device manufacturers claim it makes technology and media more secure, enhances user experience, and protects rights holders. In reality, the technologies behind DRM have been used as a vulnerability since 2005 to attack end-users' computer systems and devices. DRM limits what users can do with their media: access is limited by the whims of rights holders. Rather than protecting people who create media, it protects the interests of large companies that aggregate media.

For a thorough overview of DRM abuses, please visit the Defective by Design FAQ.

About Defective by Design

Defective by Design is an initiative of the Free Software Foundation. It is a participatory and grassroots campaign exposing DRM-encumbered devices and media for what they really are: Defective by Design. It works together with activists and others to eliminate DRM as a threat to innovation in media, reader privacy, and freedom for computer users.

About the Free Software Foundation

The Free Software Foundation, founded in 1985, is dedicated to promoting computer users' 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's work can be made at https://donate.fsf.org. Its headquarters are in Boston, MA, USA.

More information about the FSF, as well as important information for journalists and publishers, is at https://www.fsf.org/press.

Media Contacts

Molly de Blanc
Campaigns Manager
Free Software Foundation
+1 (617) 542 5942
campaigns@fsf.org

17 September, 2018 02:55PM

September 14, 2018

gnuzilla @ Savannah

IceCat 60.2.0 Pre-release

GNUzilla is the GNU version of the Mozilla suite, and GNU IceCat is the GNU version of the Firefox browser. Its main advantage is an ethical one: it is entirely free software. While the Firefox source code from the Mozilla project is free software, they distribute and recommend non-free software as plug-ins and addons. Also their trademark license restricts distribution in ways that hinder freedom 0.

GNU IceCat has multiple practical advantages as well, such as better privacy and security settings, extensive blocking of sites that may track the user's browsing habits, or the inclusion of LibreJS and other extensions that help browse without running non-free javascript.

https://www.gnu.org/software/gnuzilla/

GPG key ID:D7E04784 GNU IceCat releases
Fingerprint: A573 69A8 BABC 2542 B5A0 368C 3C76 EED7 D7E0 4784
https://savannah.gnu.org/project/memberlist-gpgkeys.php?group=gnuzilla

======

This is a pre-release for version 60.2.0 of GNU IceCat, available at http://alpha.gnu.org/gnu/gnuzilla/60.2.0/

This release contains substantial design and usability changes from the previous major version (v52.x ESR) so I'm publishing it at alpha.gnu.org to request testing and comments before moving it to ftp.gnu.org. Source Code plus binaries for GNU/Linux x86 and x86_64 are available.

The main differences (other than those provided from upstream changes from v52.x to v60.x) are:

  • LibreJS 7.x, now based in the WebExtensions API. It currently provides a very similar set of features compared with the version shipped with IceCat 52.x but testing, comments and advice are welcome.
  • A set of companion extensions for LibreJS by Nathan Nichols (https://addons.mozilla.org/en-US/firefox/user/NateN1222/) are pre-installed, and provide workarounds to use some services at USPS, RSF.org, SumOfUs.org, pay.gov, McDonald's, goteo.org and Google Docs without using nonfree JavaScript.
  • A series of configuration changes and tweaks were applied to ensure that IceCat does not initiate network connections that the user has not explicitly requested. This implies not downloading feeds, updates, blacklists or any other similar data needed during startup.
  • A new homepage shows the most important privacy and freedom options available, with explanations for the user to tune IceCat's behavior to their specific needs.
  • We no longer include SpyBlock, which was IceCat's fork of AdBlockPlus that allowed to block all third-party requests during "Private Browsing" mode. Now, we include an extension that blocks all third party requests by default, and provides a simple interface that allows to whitelist specific third-party resources on a per-site basis. This change is the most significant usability change from IceCat 52.x and I'd like to get testers to provide an opinion on it. One of the reasons for its inclusion is that unlike other blockers it doesn't need to download any files to do its job, thus avoiding the previously mentioned unrequested network connections.

Thanks to Giorgio Maone, Nathan Nichols, Nyk Nyby and Zach Wick for their contribution to LibreJS and IceCat, and happy testing!

14 September, 2018 01:55AM by Ruben Rodriguez

September 13, 2018

librejs @ Savannah

LibreJS 7.17 released

GNU LibreJS aims to address the JavaScript problem described in Richard Stallman's article The JavaScript Trap*. LibreJS is a free add-on for GNU IceCat and other Mozilla-based browsers. It blocks nonfree nontrivial JavaScript while allowing JavaScript that is free and/or trivial. * https://www.gnu.org/philosophy/javascript-trap.en.html

The source tarball for this release can be found at:
http://ftp.gnu.org/gnu/librejs/librejs-7.17.0.tar.gz
http://ftp.gnu.org/gnu/librejs/librejs-7.17.0.tar.gz.sig

The installable extension file (compatible with Mozilla-based browsers version >= v60) is available here:
http://ftp.gnu.org/gnu/librejs/librejs-7.17.0.xpi
http://ftp.gnu.org/gnu/librejs/librejs-7.17.0.xpi.sig

GPG key:05EF 1D2F FE61 747D 1FC8 27C3 7FAC 7D26 472F 4409
https://savannah.gnu.org/project/memberlist-gpgkeys.php?group=librejs

This release introduces a new interface for management of the whitelist/blacklist, along with several bug fixes:

  • Temporary hiding complain to owner feature until ready for prime time.
  • Adjust directory layout and packaging to allow Storage.js to be shared with the settings page in the xpi release.
  • Refactored panel visual styles to be reused by the settings page.
  • Support for batch async list operations.
  • Fix navigating the same url with # erases activity report information.

All contributions thanks to Giorgio Maone.

13 September, 2018 09:45PM by Ruben Rodriguez

September 12, 2018

German Arias

New release of FisicaLab for Windows

Due to some problems reported by Windows users, I decide to release a new Windows installer of FisicaLab with the alternative interface using IUP. This version is the number 0.3.5.1 and you can download it here. I will add some new features before release the version 0.4.0. If you have some problem with this new installer please write me.

12 September, 2018 05:26AM by Germán Arias

September 11, 2018

Luca Saiu

Thanks for fighting against the European copyright directive

As I am writing this, the European Parliament is debating the disastrously liberticide copyright Directive. After out previous mailing campaign (The European Parliament has rejected the copyright directive, for now ()) organized along with a group of GNU friends, we again contacted the Members of the European Parliament before the forthcoming vote. I wish to name all the people who helped by translating the text into several languages and improve it, working tirelessly and with very little time: Christopher Dimech, Yavor Doganov, Rafael Fontenelle, Alexandre Garreau, Bruno Haible, José Marchesi, Tom Uijldert. Thank you all, friends. — Luca Saiu, 2018-09-11 21:50 ... [Read more]

11 September, 2018 07:50PM by Luca Saiu (positron@gnu.org)

September 10, 2018

FSF Blogs

Boston supporters! Join us against DRM

idad protest

International Day Against DRM (IDAD) is coming up on Tuesday, September 18th. This is our twelfth year gathering together to say in one voice that we oppose Digital Restrictions Management (DRM). If you live in the Boston area, we hope you'll join us for some in-person events! We're excited to spread the word about the injustice of DRM face-to-face, and we hope to see you there.

IDAD Events

  • Thursday, September 13th, at 18:30: Join us for a sign-making party at the Free Software Foundation (FSF) office! Stop by any time between 18:30 and 20:30 to meet other free software enthusiasts from the Boston area, make signs for IDAD, and enjoy some snacks.

  • Tuesday, September 18th, from 12:00 - 14:00: We'll be in front of the Copley Square side of the Boston Public Library, to rally in support of DRM-free ebooks, audiobooks, and other media.

  • Tuesday, September 18th, at 17:30: Meet us at the FSF office in Boston to gather signs and head over to the Apple store on Boylston Street.

  • Tuesday, September 18th, at 18:00: Gathering at the Apple store on Boylston Street to communicate to shoppers that Apple devices are stacked with proprietary software and DRM-supporting technologies, that Apple opposes their Right to Repair, and that there are better options for devices and software.

Can't join us in person?

There are still things you can do to participate in IDAD! IDAD is a global event with people from all around the world participating and taking action online and in their communities. Here are a few things you can do:

If you have any questions, don't hesitate to email us at campaigns@fsf.org. Hope to see you in the office and in the streets!

Defective by Design (DbD) is a participatory and grassroots campaign run by the Free Software Foundation (FSF). DbD raises awareness about devices and media encumbered by Digital Restrictions Management (DRM), showing what they really are: Defective by Design. DRM is the practice of placing technological restrictions on digital media, and we're working together to eliminate it as a threat to freedom for computer users, as well as a threat to privacy for readers, viewers, and those making art, media, and more.

Photo by Karen Rustad Tรถlva, Attribution 2.0 Generic (CC BY 2.0)

10 September, 2018 08:20PM

September 09, 2018

guile-cv @ Savannah

Guile-CV version 0.2.0

Guile-CV version 0.2.0 is released! (September 2018)

Changes since the previous version

This is a 'milestone' release, which introduces image texture measures. In addition (a) the default installation locations have changed; (b) there is a new configure option; (c) some new interfaces; (d) matrix multiplication performances have been greatly improved; (d) a few interface (name) have changed.

For a list of changes since the previous version, visit the NEWS file. For a complete description, consult the git summary and git log

09 September, 2018 02:47AM by David Pirotte

September 06, 2018

indent @ Savannah

GNU indent 2.2.12

GNU indent version 2.2.12 (signature) has just been releases, the first release GNU indent saw in eight years.

Highlights include:

  • New options:
    • -pal / --pointer-align-left and -par / --pointer-align-right
    • -fnc / --fix-nested-comment
    • -gts / --gettext-strings
    • -slc / --single-line-conditionals
    • -as / --align-with-spaces
    • -ut / --use-tabs
    • -nut / --no-tabs
    • -sar / --spaces-around-initializers
    • -ntac / --dont-tab-align-comments
  • C99 and C11 keywords and typeof are now recognised.
  • -linux preset now includes -nbs.
  • -kr preset now includes -par.
  • Lots of bug fixes

I’d like to thank all of the contributors of this release, most importantly:

  • Tim Hentenaar for all of the fixes and refactoring he’s done in his branch
  • Petr Písař, who maintains GNU indent in Red Hat and its derivatives, who’s submitted a lot of fixes and kept supporting users on the mailing list when I couldn’t
  • Santiago Vila, who maintains GNU indent in Debian
  • Daniel P. Valentine, who helped me a lot when I initially took over the maintenance of GNU indent
  • And lots of others who submitted their patches

06 September, 2018 11:33AM by Andrej Shadura

September 05, 2018

librejs @ Savannah

LibreJS 7.16 released

GNU LibreJS aims to address the JavaScript problem described in Richard Stallman's article The JavaScript Trap*. LibreJS is a free add-on for GNU IceCat and other Mozilla-based browsers. It blocks nonfree nontrivial JavaScript while allowing JavaScript that is free and/or trivial. * https://www.gnu.org/philosophy/javascript-trap.en.html

The source tarball for this release can be found at:
http://ftp.gnu.org/gnu/librejs/librejs-7.16.0.tar.gz
http://ftp.gnu.org/gnu/librejs/librejs-7.16.0.tar.gz.sig

The installable extension file (compatible with Mozilla-based browsers version >= v60) is available here:
http://ftp.gnu.org/gnu/librejs/librejs-7.16.0.xpi
http://ftp.gnu.org/gnu/librejs/librejs-7.16.0.xpi.sig

GPG key:05EF 1D2F FE61 747D 1FC8 27C3 7FAC 7D26 472F 4409
https://savannah.gnu.org/project/memberlist-gpgkeys.php?group=librejs

The main improvement in version 7.16.0 is the implementation of WebLabels (https://www.fsf.org/blogs/licensing/rel-jslicense), which was the remaining missing feature since LibreJS got reimplemented using the WebExtensions format. On top of that, multiple bugfixes and performance improvements were added. All contributions thanks to Giorgio Maone.

Changes since version 7.15 (excerpt from the git changelog):

Fixes missing feedback for actions on the report UI when in a tab.
Fixes missing feedback on tab reload from UI panel.
Refactored HTML loading, parsing and serialization mechanisms.
Moved external licenses check into response pre-processing
WebLabels-based license checking implementation.
Fix Back/forth navigation not changing tab status information

05 September, 2018 09:40PM by Ruben Rodriguez

FSF News

Eleventh annual LibrePlanet conference set for March 23-24, 2019

The call for proposals is open now, until October 26, 2018. General registration and exhibitor and sponsor registration are also open.

LibrePlanet is an annual conference for free software users and anyone who cares about the intersection of technology and social justice. For a decade, LibrePlanet has brought together thousands of diverse voices and knowledge bases, including free software developers, policy experts, activists, hackers, students, and people who have just begun to learn about free software.

LibrePlanet 2019 will feature sessions for all ages and experience levels, including newcomers. Sharon Woods, general counsel for the Defense Digital Service (US Department of Defense) said, “Last year was my first LibrePlanet... I walked away a complete believer in free software.” In just the last three years, over a thousand people from around the world have attended LibrePlanet, with many more participating online by watching the free software-powered livestream, joining the conversation on IRC, or viewing nearly 40 hours of archived video on the FSF's GNU MediaGoblin instance.

LibrePlanet 2019's theme is "Trailblazing Free Software." In 1983, the free software movement was born with the announcement of the GNU Project. FSF founder Richard Stallman saw the dangers of proprietary code from the beginning: when code was kept secret from users, they would be controlled by the technology they used, instead of vice versa. In contrast, free software emphasized a community-oriented philosophy of sharing code freely, enabling people to understand how the programs they used worked, to build off of each other's code, to pay it forward by sharing their own code, and to create useful software that treated users fairly.

"Every year, ideas are introduced, discussed, and developed at LibrePlanet that advance the free software movement and help technology and associated law actually serve the people using them," said FSF executive director John Sullivan. "People will leave the next edition doubly motivated to chart a path away from dependency on unfree software companies like Facebook, Apple, Uber, and Microsoft, and with new knowledge about tools to help them do so."

When he identified control over one's own computer as a requirement for ethical, trustworthy computing, Stallman anticipated some of the most toxic aspects of today's proprietary software-filled world, including Digital Restrictions Management (DRM), bulk surveillance, and Service as a Software Substitute (SaaSS). With a new and growing generation of free software enthusiasts, we can take this conference as an opportunity to discuss both the present and the future of the free software movement. Using the Four Freedoms as a litmus test for ethical computing, we ask, "How will free software continue to bring to life trailblazing, principled new technologies and new approaches to the world?"

Call for Proposals

LibrePlanet 2019's talks and hands-on workshops can be for developers, young people, newcomers to free software, activists looking for technology that aligns with their ideals, policymakers, hackers, artists, and tinkerers. Potential talks should examine or utilize free software, copyleft, and related issues.

"Each year, newcomers and longtime free software activists of all ages surprise us with unique ideas they propose to explore at LibrePlanet," said Georgia Young, program manager at the FSF. "We are excited to see what trailblazing talk and workshop possibilities people bring to the conference for 2019."

Submissions to the call for proposals are being accepted through Friday, October 26, 2018 at 10:00 EDT (14:00 UTC).

About LibrePlanet

LibrePlanet is the annual conference of the Free Software Foundation. Over the last decade, LibrePlanet has blossomed from a small gathering of FSF members into a vibrant multi-day event that attracts a broad audience of people who are interested in the values of software freedom. To sign up for announcements about LibrePlanet 2019, visit https://www.libreplanet.org/2019.

Each year at LibrePlanet, the FSF presents its annual Free Software Awards. Nominations for the awards are open through Sunday, November 4th, 2018 at 23:59 UTC.

For information on how your company can sponsor LibrePlanet or have a table in our exhibit hall, email campaigns@fsf.org.

LibrePlanet 2018 was held at MIT from March 24-25, 2018. Nearly 350 attendees came together from across the world for workshops and talks centered around the theme of "Freedom Embedded." You can watch videos from last year's conference, including the opening keynote, an exploration of the potential for the free software community to last forever by maintaining its ideals while also welcoming newcomers, by Deb Nicholson, who is now director of community operations for the Software Freedom Conservancy.

About the Free Software Foundation

The Free Software Foundation, founded in 1985, is dedicated to promoting computer users' 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's work can be made at https://donate.fsf.org. Its headquarters are in Boston, MA, USA.

More information about the FSF, as well as important information for journalists and publishers, is at https://www.fsf.org/press.

Media Contacts

Georgia Young
Program Manager
Free Software Foundation
+1 (617) 542-5942
campaigns@fsf.org

05 September, 2018 02:55PM

August 28, 2018

bison @ Savannah

bison-3.1 released [stable]

We are very happy to announce the release of GNU Bison 3.1. It introduces
new features such as typed midrule actions, brings improvements in the
diagnostics, fixes several bugs and portability issues, improves the
examples, and more.

See the NEWS below for more details.

Enjoy!

28 August, 2018 04:28AM by Akim Demaille

August 27, 2018

dico @ Savannah

Version 2.6

New version of GNU dico is available for download. This version introduces support for Guile 2.2 and later, and for Python 3.5 and later. Support for Guile 1.8 has been withdrawn.

27 August, 2018 09:51AM by Sergey Poznyakoff

August 25, 2018

Christopher Allan Webber

Privilege isn't a sin, but it's a responsibility and a debt to be repaid

Recently I was on a private mailing list thread where there was debate about whether or not the project should take on steps to improve diversity. One of the mailing list participants was very upset about this idea, and said that they didn't like when people accused them of the "original sin" of having white male privilege.

I suspect this is at the root of a lot of misunderstanding and frustration around the term "privilege". Privilege is not a sin... you are not a sinner for having privilege. However it is a responsibility and a debt to be repaid and corrected for, stemming from injustices in society.

A popular social narrative is that everyone has an equal place at the starting line, so the winners and losers of a race are equally based on their merit. Unfortunately this isn't true. Privilege is being able to show up at the starting line having had sleep and a good meal and the resources to train... you still worked to be able to get to the finish line and having privilege does not take that away. But if we look at the other people on the track we could see that they not only maybe didn't get enough sleep or were not able to allocate time to train (maybe they had to work multiple jobs on the side) or couldn't afford to eat as healthily. Some of them actually may even have to start back farther from the starting line, there are rocks and weeds and potholes in their paths. If we really want to treat everyone based on merit, we'd have to give everyone an equal place at the starting line, an equal track, etc. Unfortunately, due to the way the race is set up, that does mean needing to correct for some things, and it requires actual effort to repair the track.

My spouse Morgan Lemmer-Webber is an art historian and recently got into free software development (and software development in general). She has faced sexism, as all women do, her entire life, but it was immediately more visible and severe once she entered the technology space. For example, she wrote a web application for her work at the university. I helped train her, but I refused to write any code because I wanted her to learn, and she did. Eventually the project got larger and she became a manager and hired someone whom she was to train to take over development. He took a look at the code, emailed her and said "Wow, this file looks really good, I assume your husband must have written this code?"

What a thing to say! Can you imagine how that must have felt? If I heard something like that said to me I'd want to curl up in a ball and die. And she had more experiences like this too, experiences she never had until she entered the technology space. And if you talk to women in this field, you'll hear these stories are common, and more: dismissal, harassment, rape threats if you become too visible or dare to speak out... not to mention there's the issue that most of the people in tech don't look like you, so you wonder if you really actually belonged, and you wonder if everyone else believes that too. Likewise with people of color, likewise with people in the LGBTQ space... stones and disrepair on the path, and sometimes you have to start a bit farther back.

To succeed at the race with privilege, of course you have to work hard. You have to train, you have to dedicate yourself, you have to run hard. This isn't meant to take away your accomplishments, or to say you didn't work hard. You did! It's to say that others have all these obstacles that we need to help clear from their path. No wonder so many give up the race. And there comes the responsibility and debt to be repaid: if you have privilege, put it to good work: pitch in. If you want that dream of everyone to have an equal place at the starting line to be true, help fix the track. But there's a lot of damage there... it's going to take a long time.

25 August, 2018 12:50PM by Christopher Lemmer Webber

August 22, 2018

parallel @ Savannah

GNU Parallel 20180822 ('Genova') released

GNU Parallel 20180822 ('Genova') has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/

Quote of the month:

GNU parallel is a thing of magic.

-- Josh Meyer @joshmeyerphd@twitter

New in this release:

  • parset sets exit code.
  • Bug fixes and man page updates.

GNU Parallel - For people who live life in the parallel lane.

About GNU Parallel

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.

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.

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.

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with: (wget -O - pi.dk/3 || curl pi.dk/3/) | bash

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your commandline will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, April 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use --citation)

If GNU Parallel saves you money:

About GNU SQL

GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' 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.

The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload

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.

22 August, 2018 10:55PM by Ole Tange

August 21, 2018

Parabola GNU/Linux-libre

unar being replaced by unarchiver

The unar package has been dropped in favor of Arch's unarchiver. This was discussed in the mailing list some months ago.

If you are using unar, just install unarchiver. You'll be asked if you want to replace it, just accept and continue as any normal package installation.

21 August, 2018 02:43AM by David P.

August 17, 2018

Riccardo Mottola

Graphos 0.7 released

Graphos 0.7 has been released a couple of days ago!

What's new for GNUstep's vector editor?
  • improved Bezier path editor (add/remove points)
  • Knife (Bezier Path splitting) instrument fixed and re-enabled (broken since original GDraw import!)
  • important crash fixes (Undo/Redo related)
  • Interface improvements to be more usable with Tablet/Pen digitizer.
Graphos continues to work on GNUstep for Linux/BSD as well as natively on MacOS.

Graphos running on MacOS:

17 August, 2018 08:58PM by Riccardo (noreply@blogger.com)

August 15, 2018

Parabola GNU/Linux-libre

netctl 1.18-1 and systemd 239.0-2.parabola7 may require manual intervention

The new versions of netctl and systemd-resolvconf may not be installed together. Users who have both netctl and systemd-resolvconf installed will need to manually switch to from systemd-resolvconf to openresolv before upgrading.

If you get an error

:: unable to satisfy dependency 'resolvconf' required by netctl

use

pacman -S openresolv

prior to upgrading.

15 August, 2018 05:05PM by Luke Shumaker

August 14, 2018

GNUnet News

GSoC 2018 - GNUnet Web-based User Interface

What was done?
In the context of Google Summer of Code 2018, my mentor (Martin Schanzenbach) and I have worked on creating and extending the REST API of GNUnet. Currently, we mirrored the functionality of following commands:

gnunet-identity
gnunet-namestore
gnunet-gns
gnunet-peerinfo

Additionally, we developed a website with the Javascript framework Angular 6 and the design framework iotaCSS to use the new REST API. The REST API of GNUnet is now documented with Sphinx.

14 August, 2018 07:55AM by Phil Buschmann

August 13, 2018

GNU Guix

GSoC 2018 report: Cuirass Web interface

For the last three months I have been working with the Guix team as a Google Summer of Code intern. The title of my project is "GNU Guix (Cuirass): Adding a web interface similar to the Hydra web interface".

Cuirass is a continuous integration system which monitors the Guix git repository, schedules builds of Guix packages, and presents the build status of all Guix packages. Before my project, Cuirass did not have a web interface. The goal of the project was to implement an interface for Cuirass which would allow a user to view the overall build progress, details about evaluations, build failures, etc. The web interface of Hydra is a good example of such a tool.

In this post, I present a final report on the project. The Cuirass repository with the changes made during the project is located at http://git.savannah.gnu.org/cgit/guix/guix-cuirass.git. A working instance of the implemented interface is available at https://berlin.guixsd.org/. You can find more examples and demonstrations of the achieved results below.

About Cuirass

Cuirass is designed to monitor a git repository containing Guix package definitions and build binaries from these package definitions. The state of planned builds is stored in a SQLite database. The key concepts of the Cuirass internal state are:

  • Job specification. Specifications state what has actually to be done by Cuirass. A specification is defined by a Scheme data structure (an association list) which includes a job name, repository URL, as well as the branch and a procedure proc that specifies how this is to be built.

  • Evaluation. An evaluation is a high-level build action related to a certain revision of a repository of a given specification. For each specification, Cuirass continuously produces new evaluations which build different versions of the project represented by revisions of the corresponding repository. Derivations and builds (see below) each belong to a specific evaluation.

  • Derivation. Derivations represent low-level build actions. They store such information as name of a build script and its arguments, input and output of a build action, target system type, and necessary environment variables.

  • Build. A build is a result of build actions that are prescribed by a derivation. This could be a failed build or a directory containing the files that were generated by compiling a package.

Besides the core which executes build actions and records their results in the database, Cuirass includes a web server which previously only responded to a handful of API requests with JSON containing information about the current status of builds.

Web interface

The Cuirass web interface implemented during the project is served by the Cuirass web server whose functionality has been extended to generating HTML responses and serving static files. General features of the interface are listed below.

  • The backend is written in Guile and implements request processing procedures which parse request parameters and extract specific data to be displayed from the database.

  • The frontend consists of HTML templates represented with Guile SXML and the Bootstrap 4 CSS library.

  • The appearance is minimalistic. Every page includes only specific content information and basic navigation tools.

  • The interface is lightweight and widely accessible. It does not use JavaScript which makes it available to users who do not want to have JavaScript running in the browser.

Structure

Let's review the structure of the interface and take a look at the information you can find in it. Note that the web-interface screenshots presented below were obtained with synthetic data loaded into Cuirass database.

Main page

The main page is accessible on the root request endpoint (/). The main page displays a list of all the specifications stored in the Cuirass database. Each entry of the list is a clickable link which leads to a page about the evaluations of the corresponding specification (see below).

Here is an example view of the main page.

Main page screenshot

Evaluations list

The evaluations list of a given specification with name <name> is located at /jobset/<name>/. On this page, you can see a list of evaluations of the given project starting from the most recent ones. You can navigate to older evaluations using the pagination buttons at the bottom of the page. In the table, you can find the following information:

  • The ID of the evaluation which is clickable and leads to a page with information about all builds of the evaluation (see below).

  • List of commits corresponding to the evaluation.

  • Build summary of the evaluation: number of succeeded (green), failed (red), and scheduled (grey) builds of this evaluation. You can open the list of builds with a certain status by clicking on one of these three links.

Here is a possible view of the evaluations list page:

Screenshoot of evaluations list

Builds list

The builds list of a evaluation with ID <id> is located at /eval/<id>/. On this page, you can see a list of builds of the given evaluation ordered by their stop time starting from the most recent one. Similarly to the evaluation list, there are pagination buttons located at the bottom of the page. For each build in the list, there is information about the build status (succeeded, failed, or scheduled), stop time, nixname (name of the derivation), system, and also a link to the corresponding build log. As said above, it is possible to filter builds with a certain status by clicking on the status link in the evaluations list.

Screenshot of builds list

Summary

Cuirass now has the web interface which makes it possible for users to get an overview on the status of Guix package builds in a user-friendly way. As the result of my GSoC internship, the core of the web interface was developed. Now there are several possibilities for future improvements and I would like to welcome everyone to contribute.

It was a pleasure for me to work with the Guix team. I would like to thank you all for this great experience! Special thanks to my GSoC mentors: Ricardo Wurmus, Ludovic Courtès, and Gábor Boskovits, and also to Clément Lassieur and Danny Milosavljevic for their guidance and help throughout the project.

13 August, 2018 03:00PM by Tatiana Sholokhova

libredwg @ Savannah

libredwg-0.6 released [alpha]

See https://www.gnu.org/software/libredwg/

API breaking changes:
* Removed dwg_obj_proxy_get_reactors(), use dwg_obj_get_reactors() instead.
* Renamed SORTENTSTABLE.owner_handle to SORTENTSTABLE.owner_dict.
* Renamed all -as-rNNNN program options to --as-rNNNN.

Other newsworthy changes:
* Removed all unused type-specific reactors and xdicobjhandle fields,
use the generic object and entity fields instead.
* Added signed BITCODE_RLd and BITCODE_BLd (int32_t) types.
* Added unknown_bits field to all UNSTABLE/DEBUGGING classes.
* Custom CFLAGS are now honored.
* Support for GNU parallel and coreutils timeout logfile and picat processing.

Important bugfixes:
* Fixed previously empty strings for r2007+ for some objects and entities (#34).
* Fixed r2010+ picture size calculation (DXF 160, 310), leading to wrong entity offsets.
* Added more checks for unstable objects: empty handles, controls, overflows, isnan.
* Fixed some common_entity_data, mostly with non-indexed colors and gradient filled HATCH
(#27, #28, #31)
* Fixed some proper relative handles, which were previously treated as NULL handle.
* Fixed writing TV strings, now the length includes the final \0 char.
* Fixed the initial minimal hash size, fixing an endless loop on very small
(truncated) DWG's (<1000 bytes).
* Much less memory leaks.
* Improved free, i.e. no more double free with EED data. (#33)
* Better perl bindings build support on Windows, prefer local dwg.h over
installed dwg.h on testing (#29).
* Fixed dejagnu compilation on C11 by using -fgnu89-inline (#2)

New features:
* Added unstable support for the objects ASSOCDEPENDENCY, ASSOCPLANESURFACEACTIONBODY,
DBCOLOR, DIMASSOC, DYNAMICBLOCKPURGEPREVENTER, HELIX, LIGHT, PERSSUBENTMANAGER,
UNDERLAYDEFINITION and the entities MULTILEADER, UNDERLAY.
* Added getopt_long() support to all programs, position independent options.
* Implemented examples/unknown to find field layouts of unknown objects.
With bd and bits helpers to decode unknowns.
Now with a http://picat-lang.org helper. See also HACKING and savannah News.
* Implemented parsing ACIS version 2 to the binary SAB format.
* Added all missing dwg_object_to_OBJECT() functions for objects.
* Added dwg_ent_minsert_set_num_cols(), dwg_ent_minsert_set_num_rows()
* Added --disable-dxf, --enable--debug configure options. With debug there are many
more unstable objects available.
* Added libredwg.pc (#30)
* Added valgrind supressions for known darwin/glibc leaks.
* Changed and clarified the semver version numbering on development checkouts with
major.minor[.patch[.build.nonmastercommits-gittag]]. See HACKING.

Here are the compressed sources:
http://ftp.gnu.org/gnu/libredwg/libredwg-0.6.tar.gz (9.4MB)
http://ftp.gnu.org/gnu/libredwg/libredwg-0.6.tar.xz (3.5MB)

https://github.com/LibreDWG/libredwg/releases/tag/0.6 (also window binaries)

Here are the GPG detached signatures[*]:
http://ftp.gnu.org/gnu/libredwg/libredwg-0.6.tar.gz.sig
http://ftp.gnu.org/gnu/libredwg/libredwg-0.6.tar.xz.sig

Use a mirror for higher download bandwidth:
https://www.gnu.org/order/ftp.html

Here are the SHA256 checksums:

995da379a27492646867fb490ee406f18049f145d741273e28bf1f38cabc4d5c libredwg-0.6.tar.gz
6d525ca849496852f62ad6a11b7b801d0aafd1fa1366c45bdb0f11a90bd6f878 libredwg-0.6.tar.xz
21d9619c6858ea25f95a9b6d8d6946e387309023ec17810f4433d8f61e8836af libredwg-0.6-win32.zip
d029d35715b8d86a68f8dacc7fdb5a5ac6405bc0a1b3457e75fc49c6c4cf6e06 libredwg-0.6-win64.zip

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact. First, be sure to download both the .sig file
and the corresponding tarball. Then, run a command like this:

gpg --verify libredwg-0.6.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

gpg --keyserver keys.gnupg.net --recv-keys B4F63339E65D6414

and rerun the 'gpg --verify' command.

13 August, 2018 09:48AM by Reini Urban

August 11, 2018

GNUnet News

irc bot status

As of 2018-08-09 in the early morning, we are having problems with our current IRC bot.
update 2018-08-13: I have started working on a replacement - the drupal bot is not coming back.
We have plans to migrate to a new bot as soon as possible, but hope to restore functionality to the existing one soon enough.

This post will be updated as soon as the bot is back online. The logs themselves are not affected.

We apologize for any inconvenience.

11 August, 2018 05:30PM by ng0

unifont @ Savannah

Unifont 11.0.02 Released

10 August 2018

Unifont 11.0.02 is now available. This is an interim release, with another released planned in the autumn of 2018. The main addition in this release is David Corbett's contribution of the over 600 glyphs in the Sutton SignWriting Unicode block.

Download this release at:

https://ftpmirror.gnu.org/unifont/unifont-11.0.02/

or if that fails,

ftp://ftp.gnu.org/gnu/unifont/unifont-11.0.02/

Enjoy!

Paul Hardy

11 August, 2018 01:53PM by Paul Hardy

August 09, 2018

FSF News

FSF job opportunity: Business operations manager

This position, reporting to the executive director, works as part of our operations team to ensure the organization's financial, human resources, and administrative functions run smoothly and in compliance with all legal and policy requirements. We are looking for a hands-on and detail-oriented professional who is comfortable working independently and with multiple teams, including some remote coworkers. Ideal candidates will be proactive and highly adaptable, with an aptitude for learning new tools and coming up with creative solutions. Applicants should have at least three years of experience with bookkeeping and nonprofit operations; human resources experience a plus.

Examples of job responsibilities include, but are not limited to:

  • processing accounts receivable and payable, bank deposits, and monthly financial reconciliation,

  • preparing annual budget and regular financial reports for management, helping the organization maintain its fiscal health and excellent four-star rating on Charity Navigator,

  • assisting management with the annual audit,

  • working with the operations team to ensure that GNU Press (https://shop.fsf.org/) continues to support fundraising efforts,

  • purchasing for operational and programmatic purposes,

  • coordinating ongoing vendor review,

  • administering the FSF's payroll and benefits programs,

  • providing administrative assistance to management during hiring, onboarding, and offboarding,

  • monitoring legal and regulatory landscape for changes that may impact the FSF, and

  • pitching in to help with organization-wide projects, like our major fundraising activities and annual LibrePlanet conference.

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 thirteen, 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.

Benefits and Salary

This job is a union position that must be worked on-site at the FSF's downtown Boston office. The salary is fixed at $61,672/year and is non-negotiable. Benefits include:

  • fully subsidized individual or family health coverage through Blue Cross Blue Shield,
  • partially subsidized dental plan,
  • four weeks of paid vacation annually,
  • seventeen paid holidays annually,
  • weekly remote work allowance,
  • public transit commuting cost reimbursement,
  • 403(b) program with employer match,
  • yearly cost-of-living pay increases based on government guidelines,
  • health care expense reimbursement,
  • ergonomic budget,
  • relocation (to Boston area) expense reimbursement,
  • conference travel and professional development opportunities, and
  • potential for an annual performance bonus.

Application Instructions

Applications must be submitted via email to hiring@fsf.org. The email must contain the subject line "Business Operations Manager." A complete application should include:

  • cover letter,
  • resume, and
  • two recent references.

All materials must be in a free format. Email submissions that do not follow these instructions will probably be overlooked. No phone calls, please.

Applications will be reviewed on a rolling basis until the position is filled. To guarantee consideration, submit your application by October 14, 2018.

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.

About the Free Software Foundation

The Free Software Foundation, founded in 1985, is dedicated to promoting computer users' 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's work can be made at https://donate.fsf.org. We are based in Boston, MA, USA.

09 August, 2018 06:40PM

August 07, 2018

librejs @ Savannah

LibreJS 7.15 released

GNU LibreJS aims to address the JavaScript problem described in Richard Stallman's article The JavaScript Trap*. LibreJS is a free add-on for GNU IceCat and other Mozilla-based browsers. It blocks nonfree nontrivial JavaScript while allowing JavaScript that is free and/or trivial. * https://www.gnu.org/philosophy/javascript-trap.en.html

The source tarball for this release can be found at:
http://ftp.gnu.org/gnu/librejs/librejs-7.15.0.tar.gz
http://ftp.gnu.org/gnu/librejs/librejs-7.15.0.tar.gz.sig

The installable extension file (compatible with Mozilla-based browsers version >= v60) is available here:
http://ftp.gnu.org/gnu/librejs/librejs-7.15.0.xpi
http://ftp.gnu.org/gnu/librejs/librejs-7.15.0.xpi.sig

GPG key:05EF 1D2F FE61 747D 1FC8 27C3 7FAC 7D26 472F 4409
https://savannah.gnu.org/project/memberlist-gpgkeys.php?group=librejs

Version 7.15 includes a partial rework of the mechanism for script loading and parsing, improving performance, reliability and code maintainability. The release also adds the implementation of per-script white/blacklisting, and many smaller bugfixes. All contributions thanks to the work of Giorgio Maone.

Changes since version 7.14 (excerpt from the git changelog):

Fixed whitelisting of scripts with query strings in URL.
Fixed report attempts when no tabId is available.
UI rewrite for better responsiveness and simplicity.
Broader detection of UTF-8 encoding in responses.
Fixed badge shouldn't be shown on privileged pages.
Fixed sub-frames resetting badge to green.
Uniform conventions for module importing paths.
Temporarily display back hidden old UI elements.
Refactoring list management in its own class.
Bug fixing and simplifying UI synchronization.
Whitelisted/blackilisted reporting and modification support.
Stateful response processing support.
Implement early whitelisting / blacklisting logic.
Display actual extension version number in UI.
White/Black lists back-end refactoring.
Refactor and fix HTTP response filtering.

07 August, 2018 07:16PM by Ruben Rodriguez

August 01, 2018

libc @ Savannah

The GNU C Library version 2.28 is now available

The GNU C Library
=================

The GNU C Library version 2.28 is now available.

The GNU C Library is used as the C library in the GNU system and
in GNU/Linux systems, as well as many other systems that use Linux
as the kernel.

The GNU C Library is primarily designed to be a portable
and high performance C library. It follows all relevant
standards including ISO C11 and POSIX.1-2008. It is also
internationalized and has one of the most complete
internationalization interfaces known.

The GNU C Library webpage is at http://www.gnu.org/software/libc/

Packages for the 2.28 release may be downloaded from:
http://ftpmirror.gnu.org/libc/
http://ftp.gnu.org/gnu/libc/

The mirror list is at http://www.gnu.org/order/ftp.html

NEWS for version 2.28
=====================

Major new features:

  • The localization data for ISO 14651 is updated to match the 2016

Edition 4 release of the standard, this matches data provided by
Unicode 9.0.0. This update introduces significant improvements to the
collation of Unicode characters. This release deviates slightly from
the standard in that the collation element ordering for lowercase and
uppercase LATIN script characters is adjusted to ensure that regular
expressions with ranges like [a-z] and [A-Z] don't interleave e.g. A
is not matched by [a-z]. With the update many locales have been
updated to take advantage of the new collation information. The new
collation information has increased the size of the compiled locale
archive or binary locales.

  • The GNU C Library can now be compiled with support for Intel CET, AKA

Intel Control-flow Enforcement Technology. When the library is built
with --enable-cet, the resulting glibc is protected with indirect
branch tracking (IBT) and shadow stack (SHSTK). CET-enabled glibc is
compatible with all existing executables and shared libraries. This
feature is currently supported on i386, x86_64 and x32 with GCC 8 and
binutils 2.29 or later. Note that CET-enabled glibc requires CPUs
capable of multi-byte NOPs, like x86-64 processors as well as Intel
Pentium Pro or newer. NOTE: --enable-cet has been tested for i686,
x86_64 and x32 on non-CET processors. --enable-cet has been tested
for x86_64 and x32 on CET SDVs, but Intel CET support hasn't been
validated for i686.

  • The GNU C Library now has correct support for ABSOLUTE symbols

(SHN_ABS-relative symbols). Previously such ABSOLUTE symbols were
relocated incorrectly or in some cases discarded. The GNU linker can
make use of the newer semantics, but it must communicate it to the
dynamic loader by setting the ELF file's identification (EI_ABIVERSION
field) to indicate such support is required.

  • Unicode 11.0.0 Support: Character encoding, character type info, and

transliteration tables are all updated to Unicode 11.0.0, using
generator scripts contributed by Mike FABIAN (Red Hat).

  • <math.h> functions that round their results to a narrower type are added

from TS 18661-1:2014 and TS 18661-3:2015:

- fadd, faddl, daddl and corresponding fMaddfN, fMaddfNx, fMxaddfN and
fMxaddfNx functions.

- fsub, fsubl, dsubl and corresponding fMsubfN, fMsubfNx, fMxsubfN and
fMxsubfNx functions.

- fmul, fmull, dmull and corresponding fMmulfN, fMmulfNx, fMxmulfN and
fMxmulfNx functions.

- fdiv, fdivl, ddivl and corresponding fMdivfN, fMdivfNx, fMxdivfN and
fMxdivfNx functions.

  • Two grammatical forms of month names are now supported for the following

languages: Armenian, Asturian, Catalan, Czech, Kashubian, Occitan, Ossetian,
Scottish Gaelic, Upper Sorbian, and Walloon. The following languages now
support two grammatical forms in abbreviated month names: Catalan, Greek,
and Kashubian.

  • Newly added locales: Lower Sorbian (dsb_DE) and Yakut (sah_RU) also

include the support for two grammatical forms of month names.

  • Building and running on GNU/Hurd systems now works without out-of-tree

patches.

  • The renameat2 function has been added, a variant of the renameat function

which has a flags argument. If the flags are zero, the renameat2 function
acts like renameat. If the flag is not zero and there is no kernel
support for renameat2, the function will fail with an errno value of
EINVAL. This is different from the existing gnulib function renameatu,
which performs a plain rename operation in case of a RENAME_NOREPLACE
flags and a non-existing destination (and therefore has a race condition
that can clobber the destination inadvertently).

  • The statx function has been added, a variant of the fstatat64

function with an additional flags argument. If there is no direct
kernel support for statx, glibc provides basic stat support based on
the fstatat64 function.

  • IDN domain names in getaddrinfo and getnameinfo now use the system libidn2

library if installed. libidn2 version 2.0.5 or later is recommended. If
libidn2 is not available, internationalized domain names are not encoded
or decoded even if the AI_IDN or NI_IDN flags are passed to getaddrinfo or
getnameinfo. (getaddrinfo calls with non-ASCII names and AI_IDN will fail
with an encoding error.) Flags which used to change the IDN encoding and
decoding behavior (AI_IDN_ALLOW_UNASSIGNED, AI_IDN_USE_STD3_ASCII_RULES,
NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES) have been
deprecated. They no longer have any effect.

  • Parsing of dynamic string tokens in DT_RPATH, DT_RUNPATH, DT_NEEDED,

DT_AUXILIARY, and DT_FILTER has been expanded to support the full
range of ELF gABI expressions including such constructs as
'$ORIGIN$ORIGIN' (if valid). For SUID/GUID applications the rules
have been further restricted, and where in the past a dynamic string
token sequence may have been interpreted as a literal string it will
now cause a load failure. These load failures were always considered
unspecified behaviour from the perspective of the dynamic loader, and
for safety are now load errors e.g. /foo/${ORIGIN}.so in DT_NEEDED
results in a load failure now.

  • Support for ISO C threads (ISO/IEC 9899:2011) has been added. The

implementation includes all the standard functions provided by
<threads.h>:

- thrd_current, thrd_equal, thrd_sleep, thrd_yield, thrd_create,
thrd_detach, thrd_exit, and thrd_join for thread management.

- mtx_init, mtx_lock, mtx_timedlock, mtx_trylock, mtx_unlock, and
mtx_destroy for mutual exclusion.

- call_once for function call synchronization.

- cnd_broadcast, cnd_destroy, cnd_init, cnd_signal, cnd_timedwait, and
cnd_wait for conditional variables.

- tss_create, tss_delete, tss_get, and tss_set for thread-local storage.

Application developers must link against libpthread to use ISO C threads.

Deprecated and removed features, and other changes affecting compatibility:

  • The nonstandard header files <libio.h> and <_G_config.h> are no longer

installed. Software that was using either header should be updated to
use standard <stdio.h> interfaces instead.

  • The stdio functions 'getc' and 'putc' are no longer defined as macros.

This was never required by the C standard, and the macros just expanded
to call alternative names for the same functions. If you hoped getc and
putc would provide performance improvements over fgetc and fputc, instead
investigate using (f)getc_unlocked and (f)putc_unlocked, and, if
necessary, flockfile and funlockfile.

  • All stdio functions now treat end-of-file as a sticky condition. If you

read from a file until EOF, and then the file is enlarged by another
process, you must call clearerr or another function with the same effect
(e.g. fseek, rewind) before you can read the additional data. This
corrects a longstanding C99 conformance bug. It is most likely to affect
programs that use stdio to read interactive input from a terminal.
(Bug #1190.)

  • The macros 'major', 'minor', and 'makedev' are now only available from

the header <sys/sysmacros.h>; not from <sys/types.h> or various other
headers that happen to include <sys/types.h>. These macros are rarely
used, not part of POSIX nor XSI, and their names frequently collide with
user code; see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 for
further explanation.

<sys/sysmacros.h> is a GNU extension. Portable programs that require
these macros should first include <sys/types.h>, and then include
<sys/sysmacros.h> if _GNU_LIBRARY_ is defined.

  • The tilegx*-*-linux-gnu configurations are no longer supported.
  • The obsolete function ustat is no longer available to newly linked

binaries; the headers <ustat.h> and <sys/ustat.h> have been removed. This
function has been deprecated in favor of fstatfs and statfs.

  • The obsolete function nfsservctl is no longer available to newly linked

binaries. This function was specific to systems using the Linux kernel
and could not usefully be used with the GNU C Library on systems with
version 3.1 or later of the Linux kernel.

  • The obsolete function name llseek is no longer available to newly linked

binaries. This function was specific to systems using the Linux kernel
and was not declared in a header. Programs should use the lseek64 name
for this function instead.

  • The AI_IDN_ALLOW_UNASSIGNED and NI_IDN_ALLOW_UNASSIGNED flags for the

getaddrinfo and getnameinfo functions have been deprecated. The behavior
previously selected by them is now always enabled.

  • The AI_IDN_USE_STD3_ASCII_RULES and NI_IDN_USE_STD3_ASCII_RULES flags for

the getaddrinfo and getnameinfo functions have been deprecated. The STD3
restriction (rejecting '_' in host names, among other things) has been
removed, for increased compatibility with non-IDN name resolution.

  • The fcntl function now have a Long File Support variant named fcntl64. It

is added to fix some Linux Open File Description (OFD) locks usage on non
LFS mode. As for others *64 functions, fcntl64 semantics are analogous with
fcntl and LFS support is handled transparently. Also for Linux, the OFD
locks act as a cancellation entrypoint.

  • The obsolete functions encrypt, encrypt_r, setkey, setkey_r, cbc_crypt,

ecb_crypt, and des_setparity are no longer available to newly linked
binaries, and the headers <rpc/des_crypt.h> and <rpc/rpc_des.h> are no
longer installed. These functions encrypted and decrypted data with the
DES block cipher, which is no longer considered secure. Software that
still uses these functions should switch to a modern cryptography library,
such as libgcrypt.

  • Reflecting the removal of the encrypt and setkey functions above, the

macro _XOPEN_CRYPT is no longer defined. As a consequence, the crypt
function is no longer declared unless _DEFAULT_SOURCE or _GNU_SOURCE is
enabled.

  • The obsolete function fcrypt is no longer available to newly linked

binaries. It was just another name for the standard function crypt,
and it has not appeared in any header file in many years.

  • We have tentative plans to hand off maintenance of the passphrase-hashing

library, libcrypt, to a separate development project that will, we hope,
keep up better with new passphrase-hashing algorithms. We will continue
to declare 'crypt' in <unistd.h>, and programs that use 'crypt' or
'crypt_r' should not need to change at all; however, distributions will
need to install <crypt.h> and libcrypt from a separate project.

In this release, if the configure option --disable-crypt is used, glibc
will not install <crypt.h> or libcrypt, making room for the separate
project's versions of these files. The plan is to make this the default
behavior in a future release.

Changes to build and runtime requirements:

GNU make 4.0 or later is now required to build glibc.

Security related changes:

CVE-2016-6261, CVE-2016-6263, CVE-2017-14062: Various vulnerabilities have
been fixed by removing the glibc-internal IDNA implementation and using
the system-provided libidn2 library instead. Originally reported by Hanno
Böck and Christian Weisgerber.

CVE-2017-18269: An SSE2-based memmove implementation for the i386
architecture could corrupt memory. Reported by Max Horn.

CVE-2018-11236: Very long pathname arguments to realpath function could
result in an integer overflow and buffer overflow. Reported by Alexey
Izbyshev.

CVE-2018-11237: The mempcpy implementation for the Intel Xeon Phi
architecture could write beyond the target buffer, resulting in a buffer
overflow. Reported by Andreas Schwab.

The following bugs are resolved with this release:

[1190] stdio: fgetc()/fread() behaviour is not POSIX compliant
[6889] manual: 'PWD' mentioned but not specified
[13575] libc: SSIZE_MAX defined as LONG_MAX is inconsistent with ssize_t,
when __WORDSIZE != 64
[13762] regex: re_search etc. should return -2 on memory exhaustion
[13888] build: /tmp usage during testing
[13932] math: dbl-64 pow unexpectedly slow for some inputs
[14092] nptl: Support C11 threads
[14095] localedata: Review / update collation data from Unicode / ISO
14651
[14508] libc: -Wformat warnings
[14553] libc: Namespace pollution loff_t in sys/types.h
[14890] libc: Make NT_PRFPREG canonical.
[15105] libc: Extra PLT references with -Os
[15512] libc: __bswap_constant_16 not compiled when -Werror -Wsign-
conversion is given
[16335] manual: Feature test macro documentation incomplete and out of
date
[16552] libc: Unify umount implementations in terms of umount2
[17082] libc: htons et al.: statement-expressions prevent use on global
scope with -O1 and higher
[17343] libc: Signed integer overflow in /stdlib/random_r.c
[17438] localedata: pt_BR: wrong d_fmt delimiter
[17662] libc: please implement binding for the new renameat2 syscall
[17721] libc: __restrict defined as /* Ignore */ even in c11
[17979] libc: inconsistency between uchar.h and stdint.h
[18018] dynamic-link: Additional $ORIGIN handling issues (CVE-2011-0536)
[18023] libc: extend_alloca is broken (questionable pointer comparison,
horrible machine code)
[18124] libc: hppa: setcontext erroneously returns -1 as exit code for
last constant.
[18471] libc: llseek should be a compat symbol
[18473] soft-fp: [powerpc-nofpu] __sqrtsf2, __sqrtdf2 should be compat
symbols
[18991] nss: nss_files skips large entry in database
[19239] libc: Including stdlib.h ends up with macros major and minor being
defined
[19463] libc: linknamespace failures when compiled with -Os
[19485] localedata: csb_PL: Update month translations + add yesstr/nostr
[19527] locale: Normalized charset name not recognized by setlocale
[19667] string: Missing Sanity Check for malloc calls in file 'testcopy.c'
[19668] libc: Missing Sanity Check for malloc() in file 'tst-setcontext-
fpscr.c'
[19728] network: out of bounds stack read in libidn function
idna_to_ascii_4i (CVE-2016-6261)
[19729] network: out of bounds heap read on invalid utf-8 inputs in
stringprep_utf8_nfkc_normalize (CVE-2016-6263)
[19818] dynamic-link: Absolute (SHN_ABS) symbols incorrectly relocated by
the base address
[20079] libc: Add SHT_X86_64_UNWIND to elf.h
[20251] libc: 32bit programs pass garbage in struct flock for OFD locks
[20419] dynamic-link: files with large allocated notes crash in
open_verify
[20530] libc: bswap_16 should use __builtin_bswap16() when available
[20890] dynamic-link: ldconfig: fsync the files before atomic rename
[20980] manual: CFLAGS environment variable replaces vital options
[21163] regex: Assertion failure in pop_fail_stack when executing a
malformed regexp (CVE-2015-8985)
[21234] manual: use of CFLAGS makes glibc detect no optimization
[21269] dynamic-link: i386 sigaction sa_restorer handling is wrong
[21313] build: Compile Error GCC 5.4.0 MIPS with -0S
[21314] build: Compile Error GCC 5.2.0 MIPS with -0s
[21508] locale: intl/tst-gettext failure with latest msgfmt
[21547] localedata: Tibetan script collation broken (Dzongkha and Tibetan)
[21812] network: getifaddrs() returns entries with ifa_name == NULL
[21895] libc: ppc64 setjmp/longjmp not fully interoperable with static
dlopen
[21942] dynamic-link: _dl_dst_substitute incorrectly handles $ORIGIN: with
AT_SECURE=1
[22241] localedata: New locale: Yakut (Sakha) locale for Russia (sah_RU)
[22247] network: Integer overflow in the decode_digit function in
puny_decode.c in libidn (CVE-2017-14062)
[22342] nscd: NSCD not properly caching netgroup
[22391] nptl: Signal function clear NPTL internal symbols inconsistently
[22550] localedata: es_ES locale (and other es_* locales): collation
should treat ñ as a primary different character, sync the collation
for Spanish with CLDR
[22638] dynamic-link: sparc: static binaries are broken if glibc is built
by gcc configured with --enable-default-pie
[22639] time: year 2039 bug for localtime etc. on 64-bit platforms
[22644] string: memmove-sse2-unaligned on 32bit x86 produces garbage when
crossing 2GB threshold (CVE-2017-18269)
[22646] localedata: redundant data (LC_TIME) for es_CL, es_CU, es_EC and
es_BO
[22735] time: Misleading typo in time.h source comment regarding
CLOCKS_PER_SECOND
[22753] libc: preadv2/pwritev2 fallback code should handle offset=-1
[22761] libc: No trailing `%n' conversion specifier in FMT passed from
`__assert_perror_fail ()' to `__assert_fail_base ()'
[22766] libc: all glibc internal dlopen should use RTLD_NOW for robust
dlopen failures
[22786] libc: Stack buffer overflow in realpath() if input size is close
to SSIZE_MAX (CVE-2018-11236)
[22787] dynamic-link: _dl_check_caller returns false when libc is linked
through an absolute DT_NEEDED path
[22792] build: tcb-offsets.h dependency dropped
[22797] libc: pkey_get() uses non-reserved name of argument
[22807] libc: PTRACE_* constants missing for powerpc
[22818] glob: posix/tst-glob_lstat_compat failure on alpha
[22827] dynamic-link: RISC-V ELF64 parser mis-reads flag in ldconfig
[22830] malloc: malloc_stats doesn't restore cancellation state on stderr
[22848] localedata: ca_ES: update date definitions from CLDR
[22862] build: _DEFAULT_SOURCE is defined even when _ISOC11_SOURCE is
[22884] math: RISCV fmax/fmin handle signalling NANs incorrectly
[22896] localedata: Update locale data for an_ES
[22902] math: float128 test failures with GCC 8
[22918] libc: multiple common of `__nss_shadow_database'
[22919] libc: sparc32: backtrace yields infinite backtrace with
makecontext
[22926] libc: FTBFS on powerpcspe
[22932] localedata: lt_LT: Update of abbreviated month names from CLDR
required
[22937] localedata: Greek (el_GR, el_CY) locales actually need ab_alt_mon
[22947] libc: FAIL: misc/tst-preadvwritev2
[22963] localedata: cs_CZ: Add alternative month names
[22987] math: [powerpc/sparc] fdim inlines errno, exceptions handling
[22996] localedata: change LC_PAPER to en_US in es_BO locale
[22998] dynamic-link: execstack tests are disabled when SELinux is
disabled
[23005] network: Crash in __res_context_send after memory allocation
failure
[23007] math: strtod cannot handle -nan
[23024] nss: getlogin_r is performing NSS lookups when loginid isn't set
[23036] regex: regex equivalence class regression
[23037] libc: initialize msg_flags to zero for sendmmsg() calls
[23069] libc: sigaction broken on riscv64-linux-gnu
[23094] localedata: hr_HR: wrong thousands_sep and mon_thousands_sep
[23102] dynamic-link: Incorrect parsing of multiple consecutive $variable
patterns in runpath entries (e.g. $ORIGIN$ORIGIN)
[23137] nptl: s390: pthread_join sometimes block indefinitely (on 31bit
and libc build with -Os)
[23140] localedata: More languages need two forms of month names
[23145] libc: _init/_fini aren't marked as hidden
[23152] localedata: gd_GB: Fix typo in "May" (abbreviated)
[23171] math: C++ iseqsig for long double converts arguments to double
[23178] nscd: sudo will fail when it is run in concurrent with commands
that changes /etc/passwd
[23196] string: __mempcpy_avx512_no_vzeroupper mishandles large copies
(CVE-2018-11237)
[23206] dynamic-link: static-pie + dlopen breaks debugger interaction
[23208] localedata: New locale - Lower Sorbian (dsb)
[23233] regex: Memory leak in build_charclass_op function in file
posix/regcomp.c
[23236] stdio: Harden function pointers in _IO_str_fields
[23250] nptl: Offset of __private_ss differs from GCC
[23253] math: tgamma test suite failures on i686 with -march=x86-64
-mtune=generic -mfpmath=sse
[23259] dynamic-link: Unsubstituted ${ORIGIN} remains in DT_NEEDED for
AT_SECURE
[23264] libc: posix_spawnp wrongly executes ENOEXEC in non compat mode
[23266] nis: stringop-truncation warning with new gcc8.1 in nisplus-
parser.c
[23272] math: fma(INFINITY,INFIITY,0.0) should be INFINITY
[23277] math: nan function should not have const attribute
[23279] math: scanf and strtod wrong for some hex floating-point
[23280] math: wscanf rounds wrong; wcstod is ok for negative numbers and
directed rounding
[23290] localedata: IBM273 is not equivalent to ISO-8859-1
[23303] build: undefined reference to symbol
'__parse_hwcap_and_convert_at_platform@@GLIBC_2.23'
[23307] dynamic-link: Absolute symbols whose value is zero ignored in
lookup
[23313] stdio: libio vtables validation and standard file object
interposition
[23329] libc: The __libc_freeres infrastructure is not properly run across
DSO boundaries.
[23349] libc: Various glibc headers no longer compatible with
<linux/time.h>
[23351] malloc: Remove unused code related to heap dumps and malloc
checking
[23363] stdio: stdio-common/tst-printf.c has non-free license
[23396] regex: Regex equivalence regression in single-byte locales
[23422] localedata: oc_FR: More updates of locale data
[23442] build: New warning with GCC 8
[23448] libc: Out of bounds access in IBM-1390 converter
[23456] libc: Wrong index_cpu_LZCNT
[23458] build: tst-get-cpu-features-static isn't added to tests
[23459] libc: COMMON_CPUID_INDEX_80000001 isn't populated for Intel
processors
[23467] dynamic-link: x86/CET: A property note parser bug

Release Notes
=============

https://sourceware.org/glibc/wiki/Release/2.28

Contributors
============

This release was made possible by the contributions of many people.
The maintainers are grateful to everyone who has contributed
changes or bug reports. These include:

Adhemerval Zanella
Agustina Arzille
Alan Modra
Alexandre Oliva
Amit Pawar
Andreas Schwab
Andrew Senkevich
Andrew Waterman
Aurelien Jarno
Carlos O'Donell
Chung-Lin Tang
DJ Delorie
Daniel Alvarez
David Michael
Dmitry V. Levin
Dragan Stanojevic - Nevidljivi
Florian Weimer
Flávio Cruz
Francois Goichon
Gabriel F. T. Gomes
H.J. Lu
Herman ten Brugge
Hongbo Zhang
Igor Gnatenko
Jesse Hathaway
John David Anglin
Joseph Myers
Leonardo Sandoval
Maciej W. Rozycki
Mark Wielaard
Martin Sebor
Michael Wolf
Mike FABIAN
Patrick McGehearty
Patsy Franklin
Paul Pluzhnikov
Quentin PAGÈS
Rafal Luzynski
Rajalakshmi Srinivasaraghavan
Raymond Nicholson
Rical Jasan
Richard Braun
Robert Buj
Rogerio Alves
Samuel Thibault
Sean McKean
Siddhesh Poyarekar
Stefan Liebler
Steve Ellcey
Sylvain Lesage
Szabolcs Nagy
Thomas Schwinge
Tulio Magno Quites Machado Filho
Valery Timiriliyev
Vincent Chen
Wilco Dijkstra
Zack Weinberg
Zong Li

01 August, 2018 07:08AM by Carlos O'Donell

July 30, 2018

gdbm @ Savannah

Lonely Cactus

On the Joys and Perils of YouTube

For want of a social aspect to my technology addiction, of late I have been recording video content and placing it on YouTube.  It has been an interesting endeavor, because it involves skills that I heretofore have never trained.  How does one look good on camera?  What does one do with one's hands?  What it the efficient way to record and edit video.  What is the right way to do lighting and audio?  It has been fun so far, largely because the videos I've recorded still look so amateurish.  That I will be able to learn and progress at something new enchants me.

YouTube is an amazing platform, and the result of untold man-years of effort. The voice recognition involved in the automatic closed captioning is impressive.

But as any graybeard GNU-ster will attest, placing you content solely in the hands of a faceless evil corporation like Google is unwise, since I am not their customer.  Their advertisers are their customers, and their users are just free content creators and a source of training data for their AI.  So, in parallel, I've been revisiting the idea of resurrecting my website.

It is a somewhat overwhelming idea for me because there are infinite possibilities.  I could (and should) just do a WordPress instance and call it a day, for that would be efficient, but, I would love to take the opportunity to learn something new.

Over the weekend, I enumerated my many sources of internet content.  So far, I've discovered
  • YouTube
  • Twitter
  • A code blog on Blogger
  • A personal website, hosted by a hosting provided, that is never updated
  • Another personal website that is just a parked domain right now
  • Yet another personal website, on my home PC, that is rarely updated
  • A security camera
Over a weekend's pondering, I have decided that I will keep three projects, and that each of these will just be different skins on the same content.
  • The true content backend -- not publicly visible -- which will be the source.  Video, images, audio will be stored in their native resolution and formats
  • A website.  It will be GNU-friendly.  No weird javascript.  Video will be medium resolution to split the difference quality and download time.  Probably 720p Ogg+Theora+Vorbis.  Audio will be Ogg+Vorbis or MP3.  Images will be JPEG.
  • YouTube.
  • A gopher server where the 1990s will live on forever.  Video will be shrunk to 352x288 pixel MP4 or CIF-sized 3gp+h.263+AMR_NB.  Audio will be MP3.  Images will be 640x480 GIF.
I will probably end up with a LAMP instance with Python/Django or whatever because hosting VMs like that.

---

In my personal archaeology, I also found these projects that are not externally visible or not working
  • An instance of the never-completed telnet PupperBBS, which has no content
  • A real-time chat service called Jozabad
  • A shoutcast/icecast server that has been serving up the same song for who knows how long

30 July, 2018 03:09PM by Mike (noreply@blogger.com)

July 27, 2018

libredwg @ Savannah

Revealing unknown DWG classes (2)

I've added more solver code and a more detailled explanation to the HACKING file, to find the binary layout of unknown DWG classes, in reference to public docs and generated DXF files. See https://savannah.gnu.org/forum/forum.php?forum_id=9197 for the first part.

So this is now the real AI part of examples/unknown. I've added the spec of the following classes in the meantime, in various states of completeness:
ASSOCDEPENDENCY, DIMASSOC, ASSOCACTION, the 4 SURFACE classes, HELIX, UNDERLAY and UNDERLAYDEFINITION (PDF, DGN, DWF), ASSOCALIGNEDDIMACTIONBODY, DYNAMICBLOCKPURGEPREVENTER, DBCOLOR, PERSSUBENTMANAGER, ASSOC2DCONSTRAINTGROUP, EVALUATION_GRAPH, ASSOCPERSSUBENTMANAGER, ASSOCOSNAPPOINTREFACTIONPARAM, ASSOCNETWORK, SUNSTUDY.
Many more are in work, as with the picat solver and backtracker I can now create the most promising solutions at scale.

There's a lot of code related to examples/unknown to automatically
find the field layout of yet unknown classes. At first you need
DWG/DXF pairs of unknown entities or objects and put them into
test/test-data/. At creation take care to create uniquely identifiable
names and numbers, not to create DXF fields all with the same value 0.
Then you'll never known which field in the DWG is which.

Then run make -C examples regen-unknown, which does this:

run ./logs.sh to create -v5 logfiles with the binary blobs for all
UNKNOWN_OBJ and UNKNOWN_ENT instances in those DWG's.

Then the perl script log_unknown.pl creates the include file
alldwg.inc adding all those blobs.

The next perl script log_unknown_dxf.pl parses alldwg.inc and looks
for matching DXF files, and creates the 3 include files alldxf_0.inc
with the matching blob data from alldwg.inc, alldxf_1.inc with the
matching field types and values from the DXF and alldxf_2.inc to
workaround some static initialization issues in the C file.

Next run make unknown, which does this:

Compiles and runs examples/unknown, which creates for a every string
value in the DXF some bits representations and tries to find them in
the UNKNOWN blobs. If it doesn't find them, either the string-to-bit
conversion lost too much precision to be able to find them, esp. with
doubles, or we have a different problem. make unknown creates a big
log file unknown-`git describe`.log in which you can see the
individual statistics and initial layout guesses.

E.g.
42/230=18.3%
possible: [34433333344443333334444333333311xxxxxxxxxx3443333...
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 11 1]

The x stands for a fixed field, the numbers and a dot for the number
of variants this bit is used for (the dot for >9) and a space means
this is a hole for a field which is not represented as DXF field, i.e.
a FIELD_*(name, 0) in the dwg.spec with DXF group code 0.

unknown also creates picat data files in examples/ which are then used with
picat from http://picat-lang.org/ to enhance the search for the best layout
guess for each particular class. picat is a nice mix of a functional
programming tool with an optional constraint solver. The first part in
the picat process does almost the same as unknown.c, finding the fixed
layout, possible variants and holes in a straight-forward functional
fashion. This language is very similar to erlang, untyped haskell or prolog.
The second optimization part of picat uses a solver with
constraints to improve the layout of the found variants and holes to
find the best guess for the needed dwg.spec layout.
Note that picat list and array indices are one-based, so you need to
subtract 1 from each found offset. 1-32 mean the bits 0-31.

The field names are filled in by examples/log_unknown_dxf.pl automatically.
We could parse dwg.spec for this, but for now I went with a manual solution,
as the number of unknown classes gets less, not more.

E.g. for ACAD_EVALUATION_GRAPH.pi with a high percentage from the above
possible layout, it currently produces this:

Definite result:
----------------
HOLE([1,32],01000000010100000001010000000110) len = 32
FIELD_BL (edge_flags, 93); // 32 [33,42]
HOLE([43,52],0100000001) len = 10
FIELD_BL (node_edge1, 92); // -1 [53,86]
FIELD_BL (node_edge2, 92); // -1 [87,120]
FIELD_BL (node_edge3, 92); // -1 [121,154]
FIELD_BL (node_edge4, 92); // -1 [155,188]
HOLE([189,191],100) len = 3
FIELD_H (parenthandle, 330); // 6.0.0 [192,199]
FIELD_H (evalexpr, 360); // 3.2.2E2 [200,223]
HOLE([224,230],1100111) len = 7
----------------
Todo: 32 + 178 = 210, Missing: 20
FIELD_BL (has_graph, 96); // 1 0100000001 [[1,10],[11,20],[21,30],[43,52]]
FIELD_BL (unknown1, 97); // 1 0100000001 [[1,10],[11,20],[21,30],[43,52]]
FIELD_BL (nodeid, 91); // 0 10 [[2,3],[10,11],[12,13],[20,21],[22,23],[31,32],[44,45],[52,53],[189,190],[225,226]]
FIELD_BL (num_evalexpr, 95); // 1 0100000001 [[1,10],[11,20],[21,30],[43,52]]

The next picat steps do automate the following reasoning:

The first hole 1-32 is filled by the 3 1 values from BL96, BL97 and
BL95, followed by the 0 value from BL91. The second hole is clearly
another unknown BL with value 1. The third hole at 189-191
is padding before the handle stream, and can be ignored. This is from
a r2010 file, which has seperate handle and text streams. The last
hole 224-230 could theoretically hold almost another unknown handle, but
practically it's also just padding. The last handles are always optional
reactors and the xdicobject handle for objects, and 7 bits is not enough
for a handle value. A code 4 null-handle would be 01000000.

You start by finding the DXF documentation and the ObjectARX header
file of the class, to get the names and description of the class.

You add the names and types to dwg.h and dwg.spec, change the class
type in classes.inc to DEBUGGING or UNTESTED. With DEBUGGING add the
-DDEBUG_CLASSES flag to CFLAGS in src/Makefile and test the dwg's with
programs/dwgread -v4. Some layouts are version dependent, some need
a REPEAT loop or vector with a num_field field.

The picat constraints module examples/unknown.pi is still being worked
and is getting better and better identifying all missing classes
automatically. The problem with AutoCAD DWG's is that everybody can
add their own custom classes as ObjectARX application, and that
reverse-engineering them never stops. So it has to be automated somehow.

27 July, 2018 09:55AM by Reini Urban

July 24, 2018

GNU Guix

Multi-dimensional transactions and rollbacks, oh my!

One of the highlights of version 0.15.0 was the overhaul of guix pull, the command that updates Guix and its package collection. In Debian terms, you can think of guix pull as:

apt-get update && apt-get install apt

Let’s be frank, guix pull does not yet run as quickly as this apt-get command—in the “best case”, when pre-built binaries are available, it currently runs in about 1m30s on a recent laptop. More about the performance story in a future post…

One of the key features of the new guix pull is the ability to roll back to previous versions of Guix. That’s a distinguishing feature that opens up new possibilities.

“Profile generations”

Transactional upgrades and rollbacks have been a distinguishing feature of Guix since Day 1. They come for free as a consequence of the functional package management model inherited from the Nix package manager. To many users, this alone is enough to justify using a functional package manager: if an upgrade goes wrong, you can always roll back. Let’s recap how this all works.

As a user, you install packages in your own profile, which defaults to ~/.guix-profile. Then from time to time you update Guix and its package collection:

$ guix pull

This updates ~/.config/guix/current, giving you an updated guix executable along with an updated set of packages. You can now upgrade the packages that are in your profile:

$ guix package -u
The following packages will be upgraded:
   diffoscope   93 → 96     /gnu/store/…-diffoscope-96
   emacs    25.3 → 26.1     /gnu/store/…-emacs-26.1
   gimp     2.8.22 → 2.10.4 /gnu/store/…-gimp-2.10.4
   gnupg    2.2.7 → 2.2.9   /gnu/store/…-gnupg-2.2.9

The upgrade creates a new generation of your profile—the previous generation of your profile, with diffoscope 93, emacs 25.3, and so on is still around. You can list profile generations:

$ guix package --list-generations
Generation 1  Jun 08 2018 20:06:21
   diffoscope   93     out   /gnu/store/…-diffoscope-93
   emacs        25.3   out   /gnu/store/…-emacs-25.3
   gimp         2.8.22 out   /gnu/store/…-gimp-2.8.22
   gnupg        2.2.7  out   /gnu/store/…-gnupg-2.2.7
   python       3.6.5  out   /gnu/store/…-python-3.6.5

Generation 2  Jul 12 2018 12:42:08     (current)
-  diffoscope   93     out   /gnu/store/…-diffoscope-93
-  emacs        25.3   out   /gnu/store/…-emacs-25.3
-  gimp         2.8.22 out   /gnu/store/…-gimp-2.8.22
-  gnupg        2.2.7  out   /gnu/store/…-gnupg-2.2.7
+  diffoscope   96     out   /gnu/store/…-diffoscope-96
+  emacs        26.1   out   /gnu/store/…-emacs-26.1
+  gimp         2.10.4 out   /gnu/store/…-gimp-2.10.4
+  gnupg        2.2.9  out   /gnu/store/…-gnupg-2.2.9

That shows our two generations with the diff between Generation 1 and Generation 2. We can at any time run guix package --roll-back and get our previous versions of gimp, emacs, and so on. Each generation is just a bunch of symlinks to those packages, so what we have looks like this:

Image of the profile generations.

Notice that python was not updated, so it’s shared between both generations. And of course, all the dependencies that didn’t change in between—e.g., the C library—are shared among all packages.

guix pull generations

Like I wrote above, guix pull brings the latest set of package definitions from Git master. The Guix package collection usually contains only the latest version of each package; for example, current master only has version 26.1 of Emacs and version 2.10.4 of the GIMP (there are notable exceptions such as GCC or Python.) Thus, guix package -i gimp, from today’s master, can only install gimp 2.10.4. Often, that’s not a problem: you can keep old profile generations around, so if you really need that older version of Emacs, you can run it from your previous generation.

Still, having guix pull keep track of the changes to Guix and its package collection is useful. Starting from 0.15.0, guix pull creates a new generation, just like guix package does. After you’ve run guix pull, you can now list Guix generations as well:

$ guix pull -l
Generation 10   Jul 14 2018 00:02:03
  guix 27f7cbc
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: origin/master
    commit: 27f7cbc91d1963118e44b14d04fcc669c9618176
Generation 11   Jul 20 2018 10:44:46
  guix 82549f2
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: origin/master
    commit: 82549f2328c59525584b92565846217c288d8e85
  14 new packages: bsdiff, electron-cash, emacs-adoc-mode,
    emacs-markup-faces, emacs-rust-mode, inchi, luakit, monero-gui,
    nethack, openbabel, qhull, r-txtplot, stb-image, stb-image-write
  52 packages upgraded: angband@4.1.2, aspell-dict-en@2018.04.16-0,
    assimp@4.1.0, bitcoin-core@0.16.1, botan@2.7.0, busybox@1.29.1,
    …
Generation 12   Jul 23 2018 15:22:52    (current)
  guix fef7bab
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: origin/master
    commit: fef7baba786a96b7a3100c9c7adf8b45782ced37
  20 new packages: ccrypt, demlo, emacs-dired-du,
    emacs-helm-org-contacts, emacs-ztree, ffmpegthumbnailer, 
    go-github-com-aarzilli-golua, go-github-com-kr-text, 
    go-github-com-mattn-go-colorable, go-github-com-mattn-go-isatty, 
    go-github-com-mgutz-ansi, go-github-com-michiwend-golang-pretty, 
    go-github-com-michiwend-gomusicbrainz, go-github-com-stevedonovan-luar, 
    go-github-com-wtolson-go-taglib, go-github-com-yookoala-realpath, 
    go-gitlab-com-ambrevar-damerau, go-gitlab-com-ambrevar-golua-unicode,
    guile-pfds, u-boot-cubietruck
  27 packages upgraded: c-toxcore@0.2.4, calibre@3.28.0,
    emacs-evil-collection@20180721-2.5d739f5, 
    …

The nice thing here is that guix pull provides high-level information about the differences between two subsequent generations of Guix.

In the end, Generation 1 of our profile was presumably built with Guix Generation 11, while Generation 2 of our profile was built with Guix Generation 12. We have a clear mapping between Guix generations as created by guix pull and profile generations as created with guix package:

Image of the Guix generations.

Each generation created by guix pull corresponds to one commit in the Guix repo. Thus, if I go to another machine and run:

$ guix pull --commit=fef7bab

then I know that I get the exact same Guix instance as my Generation 12 above. From there I can install diffoscope, emacs, etc. and I know I’ll get the exact same binaries as those I have above, thanks to reproducible builds.

These are very strong guarantees in terms of reproducibility and provenance tracking—properties that are typically missing from “applications bundles” à la Docker.

In addition, you can easily run an older Guix. For instance, this is how you would install the version of gimp that was current as of Generation 10:

$ ~/.config/guix/current-10-link/bin/guix package -i gimp

At this point your profile contains gimp coming from an old Guix along with packages installed from the latest Guix. Past and present coexist in the same profile. The historical dimension of the profile no longer matches exactly the history of Guix itself.

Composing Guix revisions

Some people have expressed interest in being able to compose packages coming from different revisions of Guix—say to create a profile containing old versions of Python and NumPy, but also the latest and greatest GCC. It may seem far-fetched but it has very real applications: there are large collections of scientific packages and in particular bioinformatics packages that don’t move as fast as our beloved flagship free software packages, and users may require ancient versions of some of the tools.

We could keep old versions of many packages but maintainability costs would grow exponentially. Instead, Guix users can take advantage of the version control history of Guix itself to mix and match packages coming from different revisions of Guix. As shown above, it’s already possible to achieve this by running the guix program off the generation of interest. It does the job, but can we do better?

In the process of enhancing guix pull we developed a high-level API that allows an instance of Guix to “talk” to a different instance of Guix—an “inferior”. It’s what allows guix pull to display the list of packages that were added or upgraded between two revisions. The next logical step will be to provide seamless integration of packages coming from an inferior. That way, users would be able to refer to “past” package graphs right from a profile manifest or from the command-line. Future work!

On coupling

The time traveler in you might be wondering: Why are package definitions coupled with the package manager, doesn’t it make it harder to compose packages coming from different revisions? Good point!

Tight coupling certainly complicates this kind of composition: we can’t just have any revision of Guix load package definitions from any other revision; this could fail altogether, or it could provide a different build result. Another potential issue is that guix pulling an older revision not only gives you an older set of packages, it also gives you older tools, bug-for-bug.

The reason for this coupling is that a package definition like this one doesn’t exist in a vacuum. Its meaning is defined by the implementation of package objects, by gnu-build-system, by a number of lower-level abstractions that are all defined as extensions of the Scheme language in Guix itself, and ultimately by Guile, which implements the language Guix is written in. Each instance created by guix pull brings all these components. Because Guix is implemented as a set of programming language extensions and libraries, that package definitions depend on all these parts becomes manifest. Instead of being frozen, the APIs and package definitions evolve together, which gives us developers a lot of freedom on the changes we can make.

Nix results from a different design choice. Nix-the-package-manager implements the Nix language, which acts as a “frozen” interface. Package definitions in Nixpkgs are written in that language, and a given version of Nix can possibly interpret both current and past package definitions without further ado. The Nix language does evolve though, so at one point an old Nix inevitably becomes unable to evaluate a new Nixpkgs, and vice versa.

These two approaches make different tradeoffs. Nix’ loose coupling simplifies the implementation and makes it easy to compose old and new package definitions, to some extent; Guix’ tight coupling makes such composition more difficult to implement, but it leaves developers more freedom and, we hope, may support “time travels” over longer period of times. Time will tell!

It’s like driving a DeLorean

Inside the cabin of the DeLorean time machine in “Back to the Future.”

Picture of a DeLorean cabin by Oto Godfrey and Justin Morton, under CC-BY-SA 4.0.

That profile generations are kept around already gave users a time machine of sorts—you can always roll back to a previous state of your software environment. With the addition of roll-back support for guix pull, this adds another dimension to the time machine: you can roll-back to a previous state of Guix itself and from there create alternative futures or even mix bits from the past with bits from the present. We hope you’ll enjoy it!

24 July, 2018 12:30PM by Ludovic Courtès

July 22, 2018

parallel @ Savannah

GNU Parallel 20180722 ('Crimson Hexagon') released [alpha]

GNU Parallel 20180722 ('Crimson Hexagon') [alpha] has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/

This release has significant changes and is considered alpha quality.

Quote of the month:

I've been using GNU Parallel very much and effectively lately.
Such an easy way to get huge speed-ups with my simple bash/Perl/Python
programs -- parallelize them!
-- Ken Youens-Clark @kycl4rk@twitter

New in this release:

  • The quoting engine has been changed. Instead of using \-quoting GNU Parallel now uses '-quoting in bash/ash/dash/ksh. This should improve compatibility with different locales. This is a big change causing this release to be alpha quality.
  • The CPU calculation has changed. By default GNU Parallel uses the number of CPU threads as the number of CPUs. This can be changed to the number of CPU cores or number of CPU sockets with --use-cores-instead-of-threads or --use-sockets-instead-of-threads.
  • The detected number of sockets, cores, and threads can be shown with --number-of-sockets, --number-of-cores, and --number-of-threads.
  • env_parallel now support mksh using env_parallel.mksh.
  • Bug fixes and man page updates.

GNU Parallel - For people who live life in the parallel lane.

About GNU Parallel

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.

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.

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.

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with: (wget -O - pi.dk/3 || curl pi.dk/3/) | bash

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your commandline will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, April 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use --citation)

If GNU Parallel saves you money:

About GNU SQL

GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' 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.

The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload

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.

22 July, 2018 07:41AM by Ole Tange

July 17, 2018

Riccardo Mottola

Graphos GNUstep and Tablet interface

I have acquired a Thinkpad X41 Tablet and worked quite a bit on it making it usable and then installing Linux and of course GNUstep on it. The original battery was dead and the compatible replacement I got is bigger, it works very well, but makes the device unbalanced.

Anyway, my interest about it how usable GNUstep applications would be and especially Graphos, its (and my) drawing application.

Using the interface in Tablet mode is different: the stylus is very precise and allows clicking by pointing the tip and a second button is also possible. However, contrary to the mouse use, the keyboard is folded so no keyboard modifiers are possible. Furthermore GNUstep has no on-screen keyboard so typing is not possible.

The classic OpenStep-style Menus work exceedingly well with a touch interface:the menus are easy to click and teared-out they remain like palettes, making toolbars not necessary.
This is a good start!

However, Graphos was not easy to use: aside from typing text, with no keyboard, several components requried typing (e.g. inserting Line Width).
I worked on the interface so that all these elements also had a clickable interface (e.g. Stepper Arrows). Duplicating certain items available in context-menus in regular menus, which can be detached, provided also an enhancements.
Standard items like the color wheel already work very well


Drawing on the screen is definitely very precise and convenient. Stay tuned for the upcoming release!

17 July, 2018 10:41AM by Riccardo (noreply@blogger.com)

July 15, 2018

Parabola GNU/Linux-libre

[From Arch] libutf8proc>=2.1.1-3 update requires manual intervention

The libutf8proc package prior to version 2.1.1-3 had an incorrect soname link. This has been fixed in 2.1.1-3, so the upgrade will need to overwrite the untracked soname link created by ldconfig. If you get an error

libutf8proc: /usr/lib/libutf8proc.so.2 exists in filesystem

when updating, use

pacman -Suy --overwrite usr/lib/libutf8proc.so.2

to perform the upgrade.

15 July, 2018 03:57PM by Omar Vega Ramos

July 13, 2018

libredwg @ Savannah

Revealing unknown DWG classes

I implemented three major buzzwords today in some trivial ways.

  • massive parallel processing
  • asynchronous processing
  • machine-learning: a self-improving program

The problem is mostly trivial, and the solutions also. I need to
reverse-engineer a binary closed file-format, but got some hints from
a related ASCII file-format, DWG vs DXF.

I have several pairs of files, and a helper library to convert the
ASCII data to the binary representation in the DWG. There are various
variants for most data values, and several fields are unknown, they
are not represented in the DXF, only in the DWG. So I wrote an example
program called unknown, which walks over all unknown binary blobs and
tries to find the matching known values. If a bitmap is found only
once, we have a unique match, if it's found multiple times, we have
several possibilities the fields could be laid out or if it is not
found, we have a problem, the binary representation is wrong.

When preparing the program called unknown, I decided to parse to log
files in perl and store the unknown blobs as C `.inc` files, to be
compiled into unknown as array of structs.

Several DWG files are too large and either produce too large log files
filling my hard disc or cannot be parsed properly leading to overly huge
mallocs and invalid loops, so these files need to be killed after some
timeout of 10s.

So instead of

for d in test/test-data/*.dwg; do
log=`basename "$d" .dwg`.log
echo $d
programs/dwgread -v5 "$d" 2>$log
done

I improved it to

for d in test/test-data/*.dwg; do
log=`basename "$d" .dwg`.log
echo $d
programs/dwgread -v5 "$d" 2>$log &
(sleep 10s; kill %1 2>/dev/null) &
done

The dwgread program is put into the background, with %1 being its PID,
and `sleep 10s; kill %1` implements a simple timeout via bash, not via
perl. Both processes are in the background and the second optionally
kills the first. So with some 100 files in test-data, this is
**massive parallelization**, as the dwgread processes immediately
return, and it's output appears some time later, when the process is
finished or killed. So it's also **asynchronous**, as I cannot see the
result of each individual process anymore, which returned SUCCESS,
which returned ERROR and which was killed. You need to look at the
logfiles, similar to debugging hard real-world problems, like
real-time controllers. This processing is also massively faster, but
mostly I did it to implement a simple timeout mechanism in bash.

The next problem with the background processing is that I don't know
when all the background processes stopped, so I had to add one more
line:

while pgrep dwgread; do sleep 1; done

Otherwise I would continue processing the logfiles, creating my C
structs from these, but some logfiles would still grow and I would
miss several unknown classes.

The processed data is ~10GB gigabyte large, so massive parallel
processing saves some time. The log files are only temporarily needed
to extract the binary blobs and can be removed later.

Eventually I turnned off the massive parallelization using another
timeout solution:

for d in test/test-data/*.dwg; do
log=`basename "$d" .dwg`.log
echo $d
timeout -k 1 10 programs/dwgread -v5 "$d" 2>$log
done

I could also use GNU [parallel](https://www.gnu.org/software/parallel/parallel_tutorial.html) with timeout instead to re-enable the
parallelization though and collect the async results properly.

parallel timeout 10 programs/dwgread -v5 {} \2\>{/.}.log ::: test/test-data/*.dwg
cd test/test-data
parallel timeout 10 ../../programs/dwgread -v5 {} \2\>../../{/.}_{//}.log ::: \*/\*.dwg

So now the other interesting problem, the machine-learning part.
Let me show you first some real data I'm creating.

Parsing the logfiles and DXF data via some trivial perl scripts creates an array of such structs:

{ "ACDBASSOCOSNAPPOINTREFACTIONPARAM", "test/test-data/example_2000.dxf", 0x393, /* 473 */
"\252\100\152\001\000\000\000\000\000\000\074\057\340\014\014\200\345\020\024\126\310\100", 176, NULL },

/* ACDBASSOCOSNAPPOINTREFACTIONPARAM 393 in test/test-data/example_2000.dxf */
static const struct _unknown_field unknown_dxf_473[] = {
{ 5, "393", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 330, "392", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 100, "AcDbAssocActionParam", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 1, "", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 100, "AcDbAssocCompoundActionParam", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "1", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 360, "394", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 330, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 100, "ACDBASSOCOSNAPPOINTREFACTIONPARAM", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 90, "1", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 40, "-1.0", NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1} },
{ 0, NULL, NULL, 0, BITS_UNKNOWN, {-1,-1,-1,-1,-1}}
};

I prefer the data to be compiled in, so it's not on the heap but in
the .DATA segment as const. And from this data, the programs creates
this log:

ACDBASSOCOSNAPPOINTREFACTIONPARAM: 0x393 (176) test/test-data/example_2000.dxf
=bits: 010101010000001001010110100000000000000000000000000000000000000000000
0000000000000111100111101000000011100110000001100000000000110100111000010000
0101000011010100001001100000010
handle 0.2.393 (0)
search 5:"393" (24 bits of type HANDLE [0]) in 176 bits
=search (0): 010000001100000011001001
handle 4.2.392 (0)
search 330:"392" (24 bits of type HANDLE [1]) in 176 bits
=search (0): 010000101100000001001001
handle 8.0.0 (393)
search 330:"392" (8 bits of type HANDLE [1]) in 176 bits
=search (0): 00000001
330: 392 [HANDLE] found 3 at offsets 75-82, 94, 120 /176
100: AcDbAssocActionParam
search 90:"0" (2 bits of type BL [3]) in 176 bits
=search (0): 00
90: 0 [BL] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
search 1:"" (2 bits of type TV [4]) in 176 bits
=search (0): 00
1: [TV] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
100: AcDbAssocCompoundActionParam
search 90:"0" (2 bits of type BL [6]) in 176 bits
=search (0): 00
90: 0 [BL] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
search 90:"0" (2 bits of type BL [7]) in 176 bits
=search (0): 00
90: 0 [BL] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
search 90:"1" (10 bits of type BL [8]) in 176 bits
=search (0): 0000001000
field 90 already found at 176
search 90:"1" (10 bits of type BL [8]) in 7 bits
=search (169): 0000001000
search 90:"1" (10 bits of type BS [8]) in 7 bits
=search (169): 0000001000
handle 3.2.394 (0)
search 360:"394" (24 bits of type HANDLE [9]) in 176 bits
=search (0): 010011001100000000101001
handle 2.2.394 (393)
search 360:"394" (24 bits of type HANDLE [9]) in 176 bits
=search (0): 010001001100000000101001
handle 3.2.394 (393)
search 360:"394" (24 bits of type HANDLE [9]) in 176 bits
=search (0): 010011001100000000101001
handle 4.2.394 (393)
search 360:"394" (24 bits of type HANDLE [9]) in 176 bits
=search (0): 010000101100000000101001
handle 5.2.394 (393)
search 360:"394" (24 bits of type HANDLE [9]) in 176 bits
=search (0): 010010101100000000101001
handle 6.0.0 (393)
search 360:"394" (8 bits of type HANDLE [9]) in 176 bits
=search (0): 00000110
360: 394 [HANDLE] found 2 at offsets 109-116, 122-129 /176
search 90:"0" (2 bits of type BL [10]) in 176 bits
=search (0): 00
90: 0 [BL] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
search 90:"0" (2 bits of type BL [11]) in 176 bits
=search (0): 00
90: 0 [BL] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
handle 4.0.0 (0)
search 330:"0" (8 bits of type HANDLE [12]) in 176 bits
=search (0): 00000010
330: 0 [HANDLE] found 2 at offsets 8-15, 168-175 /176
100: ACDBASSOCOSNAPPOINTREFACTIONPARAM
search 90:"0" (2 bits of type BL [14]) in 176 bits
=search (0): 00
90: 0 [BL] found >5 at offsets 8-9, 9, 10, 11, 12, ... /176
search 90:"1" (10 bits of type BL [15]) in 176 bits
=search (0): 0000001000
field 90 already found at 168
search 90:"1" (10 bits of type BL [15]) in 7 bits
=search (169): 0000001000
search 90:"1" (10 bits of type BS [15]) in 7 bits
=search (169): 0000001000
search 40:"-1.0" (66 bits of type BD [16]) in 176 bits
=search (0): 000000000000000000000000000000000000000000000000001111001111010000
40: -1.0 [BD] found 1 at offset 32-97 /176
66/176=37.5%
possible: [ 8....8187 7......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx..81 77 7....8118.........9211 77 7..7 7...7 7..7
7..7 77 xxxxxxxx]

It converts each blob into bits of 0 or 1, converts each DXF field to
some binary types, also logged as bits, then some handwritten **membits()**
search similar to `memmem()` or `strstr()` searches the bitmask in the blob
and records all found instances. In the printed **possible [ ]** array the
xxxx represents unique finds, `1-9` and `.` multiple finds and space
holes for unknown fields, not represented in the DXF, DWG only
fields. These can be guessed from the documentation and some thinking.

Most fields itself are specialized run-length bit-encoded, so a 0.0
needs only 2 bits 10, an empty string needs the same 2 bits 10, the
number 0 as BL (bitlong) needs 2 bits 10, and 90:"1", i.e. the number
1 as BL (bitlong) needs 10 bits 0010000000. So you really need unique
values in the sample data to get enough unique finds. In this bad
example, which so far really is the best example in my data I get 37.5% of
exact matches, with 6x 90:0, i.e. 6 times the number 0. You won't know
which binary 00 is the the real number 0. Conversion from
strings to floats is also messy and inprecise. While representing a
double as 64 binary bits is always properly defined in Intel chips,
the reverse is not true, respresenting the string as double can lead
to various representations and I search various variants cutting off
the mantissa precision to find our matching binary double.

What I'll be doing then is to shuffle the values a bit in the DXF to
represent uniquely identifiable values, like 1,2,3,4,5,6, convert this
DXF back to a DWG, and analyse this pair again. This is e.g. what I did to
uniquely identify the position of the header variables in earlier DWG
versions.

Bad percentages are not processed anymore and removed from the
program. So I create a constant feedback loop, with the program
creating these logs, and a list of classes to skip and permute to
create better matches. I could do this within my program for a
complete self-learning process, but I rather create logfiles,
re-analyse them, adjust the data structures shown above, re-compile
the program and run it again. Previously I did such a re-compilation
step via shared modules, which I can compile from within the program,
dlload and dlunload it, but this is silly. Simple C structs on disc
are easier to follow than shared libs in memory. I also store the
intermediate steps in git, so I can check how the progress of the
self-improvement evolves, if at all. Several such objects were getting
worse and worse deviating to 0%, because there were no unique values
and finds anymore. Several representations are also still wrong, some
text values are really values from some external references, such as
the layer name.

So this was a short intro into massive parallel processing,
asynchronous processing, and machine-learning: a self-improving program.
The code in question is here:
https://github.com/LibreDWG/libredwg/tree/master/examples
All the `*.inc` and `*.skip` files are automatically created by make -C examples regen-unknown.

The initial plan was to create a more complex backtracking solver to
find the best matches for all possible variants, but step-wise
refinement in controllable loops and usage of several trivial tools is
so far much easier than real AI. AI really is trivial if you do it
properly.

Followed by https://savannah.gnu.org/forum/forum.php?forum_id=9203 for the actual AI part with picat.

13 July, 2018 10:11PM by Reini Urban

July 12, 2018

Riccardo Mottola

DataBasin + DataBasinKit 1.0 released

A new release (1.0) for DataBasin and its framework DataBasinKit is out!

This release provides lots of news, most of the enhancements coming from the framework and exposed by the GUI:
  • Update login endpoint to login.salesforce.com (back again!)
  • Implement retrieve (get fields from a list of IDs, natively)
  • Support nillable fields on create
  • save HTML tables and pseudo-XLS in HTML-typed formats
  • Fix cloning of connections in case of threading
  • Implement Typing of fields after describing query elements (DBSFDataTypes)

DataBasin is a tool to access and work with SalesForce.com. It allows to perform queries remotely, export and import data, inspect single records and describe objects. DataBasinKit is its underlying framework which implements the APIs in Objective-C. Works on GNUstep (major Unix variants and MinGW on windows) and natively on macOS.

12 July, 2018 04:44PM by Riccardo (noreply@blogger.com)

July 09, 2018

FSF News

July 06, 2018

GNU Guix

GNU Guix and GuixSD 0.15.0 released

We are pleased to announce the new release of GNU Guix and GuixSD, version 0.15.0! This release brings us close to what we wanted to have for 1.0, so it’s probably one of the last zero-dot-something releases.

The release comes with GuixSD ISO-9660 installation images, a virtual machine image of GuixSD, and with tarballs to install the package manager on top of your GNU/Linux distro, either from source or from binaries.

It’s been 7 months (much too long!) since the previous release, during which 100 people contributed code and packages. The highlights include:

  • The unloved guix pull command, which allows users to upgrade Guix and its package collection, has been overhauled and we hope you will like it. We’ll discuss these enhancements in another post soon but suffice to say that the new guix pull now supports rollbacks (just like guix package) and that the new --list-generations option allows you to visualize past upgrades. It’s also faster, not as fast as we’d like though, so we plan to optimize it further in the near future.
  • guix pack can now produce relocatable binaries. With -f squashfs it can now produce images stored as SquashFS file systems. These images can then be executed by Singularity, a “container engine” deployed on some high-performance computing clusters.
  • GuixSD now runs on ARMv7 and AArch64 boxes! We do not provide an installation image though because the details depend on the board you’re targeting, so you’ll have to build the image yourself following the instructions. On ARMv7 it typically uses U-Boot, while AArch64 boxes such as the OverDrive rely on the EFI-enabled GRUB. Bootloader definitions are available for many boards—Novena, A20 OLinuXino, BeagleBone, and even NES.
  • We further improved error-reporting and hints provided by guix system. For instance, it will now suggest upfront kernel modules that should be added to the initrd—previously, you could install a system that would fail to boot simply because the initrd lacked drivers for your hard disk.
  • OS configuration has been simplified with the introduction of things like the initrd-modules field and the file-system-label construct.
  • There’s a new guix system docker-image command that does exactly what you’d expect. :-)
  • There’s a dozen new GuixSD services: the Enlightenment and MATE desktops, Apache httpd, support for transparent emulation with QEMU through the qemu-binfmt service, OpenNTPD, and more.
  • There were 1,200 new packages, so we’re now close to 8,000 packages.
  • Many bug fixes!
  • The manual is now partially translated into French and you can help translate it into your native language by joining the Translation Project.

See the release announcement for details.

About GNU Guix

GNU Guix is a transactional package manager for the GNU system. The Guix System Distribution or GuixSD is an advanced distribution of the GNU system that relies on GNU Guix and respects the user's freedom.

In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix uses low-level mechanisms from the Nix package manager, except that packages are defined as native Guile modules, using extensions to the Scheme language. GuixSD offers a declarative approach to operating system configuration management, and is highly customizable and hackable.

GuixSD can be used on an i686, x86_64, ARMv7, and AArch64 machines. It is also possible to use Guix on top of an already installed GNU/Linux system, including on mips64el and aarch64.

06 July, 2018 12:00PM by Ludovic Courtès

July 05, 2018

Luca Saiu

The European Parliament has rejected the copyright directive, for now

The EU copyright directive in its present form has deep and wide implications reaching far beyond copyright, and erodes into core human rights and values. For more information I recommend Julia Reda’s analysis at , which is accessible to the casual reader but also contains pointers to the text of the law. Today on June 5, following a few weeks of very intense debate, campaigning and lobbying including deliberate attempts to mislead politicians (), the European Parliament voted in plenary session to reject the directive in its current form endorsed by the JURI committee, and instead reopen the debate. It ... [Read more]

05 July, 2018 10:47PM by Luca Saiu (positron@gnu.org)

libredwg @ Savannah

libredwg-0.5 released [alpha]

See https://www.gnu.org/software/libredwg/ and http://git.savannah.gnu.org/cgit/libredwg.git/tree/NEWS?h=0.5

Here are the compressed sources:
http://ftp.gnu.org/gnu/libredwg/libredwg-0.5.tar.gz (9.2MB)
http://ftp.gnu.org/gnu/libredwg/libredwg-0.5.tar.xz (3.4MB)

Here are the GPG detached signatures[*]:
http://ftp.gnu.org/gnu/libredwg/libredwg-0.5.tar.gz.sig
http://ftp.gnu.org/gnu/libredwg/libredwg-0.5.tar.xz.sig

Use a mirror for higher download bandwidth:
https://www.gnu.org/order/ftp.html

Here are the SHA256 checksums:

920c1f13378c849d41338173764dfac06b2f2df1bea54e5069501af4fab14dd1 libredwg-0.5.tar.gz
fd7b6d029ec1c974afcb72c0849785db0451d4ef148e03ca4a6c4a4221b479c0 libredwg-0.5.tar.xz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact. First, be sure to download both the .sig file
and the corresponding tarball. Then, run a command like this:

gpg --verify libredwg-0.5.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

gpg --keyserver keys.gnupg.net --recv-keys B4F63339E65D6414

and rerun the 'gpg --verify' command.

05 July, 2018 05:35AM by Reini Urban

July 02, 2018

GNU Guile

GNU Guile 2.2.4 released

We are delighted to announce GNU Guile 2.2.4, the fourth bug-fix release in the new 2.2 stable release series. It fixes many bugs that had accumulated over the last few months, in particular bugs that could lead to crashes of multi-threaded Scheme programs. This release also brings documentation improvements, the addition of SRFI-71, and better GDB support.

See the release announcement for full details and a download link. Enjoy!

02 July, 2018 09:00AM by Ludovic Courtès (guile-devel@gnu.org)

coreutils @ Savannah

coreutils-8.30 released [stable]

02 July, 2018 02:02AM by Pádraig Brady

June 28, 2018

Christopher Allan Webber

We Miss You, Charlie Brown

Morgan was knocking on the bathroom door. She wanted to know why I was crying when I was meant to be showering.

I was crying because my brain had played a cruel trick on me last night. It conjured a dream in which all the characters from the comic strip "Peanuts" represented myself and friends. Charlie Brown, the familiar but awkward everyman of the series, was absent from every scene, and in that way, heavily present.

I knew that Charlie Brown was absent because Charlie Brown had committed suicide.

I knew that Charlie Brown was my friend Matt Despears.

The familiar Peanuts imagery passed by: Linus (who was me), sat at the wall, but with nobody to talk to. Lucy held out the football, but nobody was there to kick it. Snoopy sat at his doghouse with an empty bowl, and nobody was there to greet him. And so on.

Then the characters, in silence, moved on with their lives, and the title scrolled by the screen... "We Miss You, Charlie Brown".

And so, that morning, I found myself in the shower, crying.

Why Peanuts? I don't know. I wouldn't describe myself as an overly energetic fan of the series. I also don't give too much credit for dream imagery as being necessarily important, since I think much tends to be the byproduct of the cleanup processes of the brain. But it hit home hard, probably because the imagery is so very familiar and repetitive, and so the absence of a key component amongst that familiarity stands out strongly. And maybe Charlie Brown just a good fit for Matt: awkward but loveable.

It has now been over six years since Matt has passed, and I find myself thinking of him often, usually when I have the urge to check in with him and remember that he isn't there. Before this recent move I was going through old drives and CDs and cleaning out and wiping out old junk, and found an archive of old chat logs from when I was a teenager. I found myself reliving old conversations, and most of it was utter trash... I felt embarrassed with my past self and nearly deleted the entire archive. But then I went through and read those chat logs with Matt. I can't say they were of any higher quality... my conversations with Matt seemed even more absurd on average than the rest. But I kept the chat logs. I didn't want to lose that history.

I felt compelled to write this up, and I don't entirely know why. I also nearly didn't write this up, because I think maybe this kind of writing can be dangerous. That may sound absurd, but I can speak from my experience of someone who frequently experiences suicidal ideation that the phrase "would anyone really miss me when I'm gone" comes to mind, and maybe this reinforces that.

I do think that society tends to romanticize depression and suicide in some strange ways, particularly this belief that suffering makes art greater. A friend of mine pointed this out to me for the first time in reference to John Toole's "A Confederacy of Dunces", often advertised and sold to others by, "and the author committed suicide before it was ever published!" But it would have been better to have more books by John Toole instead.

So as for "will anyone miss me if I'm gone", I want to answer that without romanticizing it. The answer is just "Yes, but it would be better if you were here."

A group of friends and I got together to play a board game recently. We sat around the table and had a good time. I drew a picture of "Batpope", one of Matt's favorite old jokes, and we left it on an empty spot at the table for Matt. But we would have rathered that Matt was there. His absence was felt. And that's usually how it is... like in the dream, we pass through the scenes of our lives, and we carry on, but there's a missing space, and one can feel the shape. There's no romance to that... just absence and memories.

We miss you, Matt Despears.

28 June, 2018 04:50PM by Christopher Lemmer Webber

June 27, 2018

gdbm @ Savannah

Version 1.16

Version 1.16 has been released.

This version improves free space management and fixes a long-standing bug discovered recently due to introduction of strict database consistency checks.

27 June, 2018 07:05PM by Sergey Poznyakoff

June 21, 2018

foliot @ Savannah

GNU Foliot version 0.9.8

GNU Foliot version 0.9.8 is released (June 2018)

This is a maintenance release, which brings GNU Foliot up-to-date with Grip 0.2.0, upon which it
depends. In addition, the default installation locations changed, and there is a new configure option.

For a list of changes since the previous version, visit the NEWS file. For a complete description, consult the git summary and git log.

21 June, 2018 03:37AM by David Pirotte

June 20, 2018

parallel @ Savannah

GNU Parallel 20180622 ('Kim Trump') released

GNU Parallel 20180622 ('Kim Trump') has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/

Quote of the month:

GNU Parallel 實在太方便啦!!
Yucheng Chuang @yorkxin@twitter

New in this release:

  • Deal better with multibyte chars by forcing LC_ALL=C.
  • GNU Parallel was shown on Danish national news for 1.7 seconds: dr.dk
  • Bug fixes and man page updates.

GNU Parallel - For people who live life in the parallel lane.

About GNU Parallel

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.

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.

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.

You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/

You can install GNU Parallel in just 10 seconds with: (wget -O - pi.dk/3 || curl pi.dk/3/) | bash

Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Walk through the tutorial (man parallel_tutorial). Your commandline will love you for it.

When using programs that use GNU Parallel to process data for publication please cite:

O. Tange (2018): GNU Parallel 2018, April 2018, https://doi.org/10.5281/zenodo.1146014.

If you like GNU Parallel:

  • Give a demo at your local user group/team/colleagues
  • Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
  • Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
  • Request or write a review for your favourite blog or magazine
  • Request or build a package for your favourite distribution (if it is not already there)
  • Invite me for your next conference

If you use programs that use GNU Parallel for research:

  • Please cite GNU Parallel in you publications (use --citation)

If GNU Parallel saves you money:

About GNU SQL

GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' 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.

The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.

When using GNU SQL for a publication please cite:

O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.

About GNU Niceload

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.

20 June, 2018 10:00PM by Ole Tange