Planet GNU

Aggregation of development blogs from the GNU Project

September 22, 2017

Lonely Cactus

9/22/17

In digging through the ASIO C++ library examples, I came across an actual use of std::bind. Its entry in cppreference seemed like buzzword salad, so I never previously had paid it any attention.

But in ASIO, they use std::bind to create functions from class methods and associated data.  The functions get passed to its async driver.  So if I liken the output of std::bind to a sort of closure that returns a procedure, it makes sense to me.

by Mike (noreply@blogger.com) at September 22, 2017 08:42 PM

September 21, 2017

parallel @ Savannah

GNU Parallel 20170922 ('Mexico City') released

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

Haiku of the month:

--limit can
limit jobs dynamic'ly
given a command
--ole-tange

New in this release:

  • Use '--limit myprog' to make a dynamic job limit. Just return 0 to spawn another job, 1 to not spawn another job, and 2 to kill the youngest job.
  • PARALLEL_RSYNC_OPTS and --rsync-opts sets the options for rsync (Default: -rlDzR).
  • 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 (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.

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://www.gnu.org/s/parallel/merchandise.html
  • 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.

by Ole Tange at September 21, 2017 11:09 PM

GNUnet News

gnURL 7.55.1-4 released

Today gnURL has been released in version 7.55.1-4 as a patch release.

Mainly this fixes:
You no longer have to run "./buildconf" before compiling gnURL, and therefore autoconf + automake as dependency are dropped.

by ng0 at September 21, 2017 02:58 PM

September 20, 2017

FSF Blogs

Free Software Directory meeting recap for September 15th, 2017

Every week free software activists from around the world come together in #fsf on irc.freenode.org to help improve the Free Software Directory. This recaps the work we accomplished at the Friday, September 15th, 2017 meeting.

Last week's theme was again adding new entries. This time we ended up filing a lot of bugs with packages, rather than getting to add a lot of packages. That's still a very useful part of the work that we do on the Directory. The Directory helps users to find free software, and making sure that there isn't a freedom issue with a particular package ensures that there's more free software out there for them to find. Often the issue is something simple, like a missing license file. But sometimes it can get a bit tricky to sort out, when there are multiple conflicting licenses. So there's work to be done that can be accomplished by volunteers of any skill level, from just starting out to license-hacking gurus. Hope to see you all there again at the next meeting.

If you would like to help update the directory, meet with us every Friday in #fsf on irc.freenode.org from 12 p.m. to 3 p.m. EDT (16:00 to 19:00 UTC).

September 20, 2017 09:33 PM

Lonely Cactus

9/20/2017

On my birthday, I kayaked the sea caves on Santa Cruz island, which was fun.

I've been quite depressed lately: my exercise regimen has faltered.

I'm glad to find that one can use ASIO as a header-only package without installing all of Boost.

by Mike (noreply@blogger.com) at September 20, 2017 05:48 PM

FSF News

New FSF membership benefit: LibreOffice certification

BOSTON, Massachusetts, USA -- Wednesday, September 20th, 2017 -- The Free Software Foundation (FSF) today announced that the opportunity to apply for LibreOffice certification for migrations and trainings is now available to FSF Associate Members.

LibreOffice is a free software project of The Document Foundation (TDF), a non-profit based in Germany. An office suite, LibreOffice encompasses word processing, and programs for the creation and editing of spreadsheets, slideshows, databases, diagrams and drawings, and mathematical formulae. It uses the ISO standard OpenDocument file format (ODF).

"LibreOffice is widely used, effectively fulfills a crucial free software need, and its robust community has made it even better in just a few years' time. Using LibreOffice gets many people started down the path of free software," said FSF executive director John Sullivan. "We admire The Document Foundation's steadfast commitment to free software principles."

In 2015, TDF began offering LibreOffice certification to certify "individuals actively promoting LibreOffice deployments, thanks to their competence in specific areas" including development and L3 support, migrations to LibreOffice, and LibreOffice training.

People who are certified in LibreOffice migrations and trainings are able to help companies and government offices make the switch away from proprietary office suites, and that raises the value of a deep understanding of LibreOffice. Italo Vignoli, Chair of the LibreOffice Certification Committee, said, "By extending LibreOffice certification to FSF members, we are widening the reach of our program to foster migrations to LibreOffice. In several geographies, the availability of certified professionals has triggered a number of large deployments in public administrations and enterprises."

FSF members can learn more about the program at https://www.documentfoundation.org/certification/program/ and fill out the application form at https://www.documentfoundation.org/certification/application/.

Fans of software freedom can become an FSF Associate Member for as little as $10/month or $5/month for students. Membership comes with an array of benefits, including the opportunity to become certified in LibreOffice migrations and trainings, and supports the FSF and the GNU Project.

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 https://fsf.org and https://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 Contact

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

September 20, 2017 02:59 PM

September 19, 2017

FSF Blogs

LibrePlanet 2018: Let's talk about Freedom. Embedded.

The call for sessions is open now, until November 2nd, 2017. General registration and exhibitor and sponsor registration are also open. Pre-order a LibrePlanet 10th anniversary t-shirt when you register to attend!

Do you want to discuss or teach others about a topic relevant to the free software community? You've got until Thursday, November 2nd, 2017 at 10:00 EDT (14:00 UTC) to submit your session proposals.

LibrePlanet is an annual conference for free software enthusiasts and everyone who cares about the intersection of technology and social justice. For the past nine years, LibrePlanet has brought together free software developers, policy experts, activists, hackers, students, and people who are at the beginning of their free software journeys. LibrePlanet 2018 will feature programming for all ages and experience levels.

If you're new to the community or to the LibrePlanet conference, check out last year's conference site and session videos, including the opening keynote, a look at the 21st century techno-surveillance state by Kade Crockford of the Massachusetts chapter of the ACLU.

What kinds of sessions are we looking for?

Each year, LibrePlanet offers both technical talks and sessions examining the intersection of free software and activism, culture, and current events. Here are a few examples of talks or sessions you might propose:

  • An examination of how free software can aid in an aspect of life that is important to you, like education, medicine, social movements, or community organizing

  • A workshop (for beginners or experienced users) on how to use a free software program or free hardware project

  • A project sprint, where new and current contributors to a free software project can meet and work together on an aspect of the project

  • An introduction to free software licensing, copyleft, or a deep dive into a current legal issue

  • An update on your free software project

Check out talk recordings from LibrePlanet 2017 for more ideas.

LibrePlanet's 10th anniversary theme is "Freedom. Embedded." Embedded systems are everywhere, in cars, digital watches, traffic lights, and even within our bodies. Proprietary software is everywhere, its sinister aspects woven throughout the devices permeating our lives. We've come to expect that our phones monitor our activity and share that data with big companies, and that governments enforce digital restrictions management (DRM).

In a society reliant on embedded systems, how do we defend computer user freedom? How do we insist on copylefted code, protect ourselves against government and corporate surveillance, and move toward a freer world? For many people, digital freedom seems like a pipe dream. We change the narrative and make free software the norm, instead of walled gardens, denial of the right to repair, and DRM.

The FSF is committed to increasing participation by people belonging to groups traditionally underrepresented at free software conferences, including women, people of color, and transgender and nonbinary people. If you are comfortable sharing demographic information on the proposal form, please do. Your proposal will not be judged negatively should you choose to omit information about your identity.

The LibrePlanet conference also has a safe space policy, because we want everyone who attends to feel comfortable, cared for, and able to enjoy the conference without worrying about harassment. The policy applies to all conference sessions, so keep that in mind when you write your proposal.

We will hold IRC office hours in the #libreplanet channel on irc.freenode.org so you can ask questions about the call for sessions and get feedback on your proposal before you submit -- we will announce hours and dates for these feedback sessions soon. You may also contact us at campaigns@fsf.org any time between now and the submission deadline if you have questions about your submission.

LibrePlanet has thrived for a decade thanks to the interesting ideas and generous spirit found in the free software community. We hope you will want to be part of LibrePlanet 2018. Submit a proposal now!.

Gratis admission for FSF members

Members (and students with valid ID) attend LibrePlanet gratis. FSF Associate Membership starts at just $10/month and comes with many benefits.

Need help attending LibrePlanet?

The FSF is able to offer a limited amount of funding to bring conference participants to LibrePlanet from all around the world. You can apply for a scholarship through Thursday, November 30th, 2017 at 10:00 EST (15:00 UTC). Scholarship recipients will be notified by early January.

If you don't need a scholarship, you can help those with financial need attend LibrePlanet 2018 by making a contribution to the conference's scholarship fund now, or when you register for LibrePlanet.

Volunteering

LibrePlanet is supported by dozens of volunteers, without whom this community event would not happen -- and volunteers attend LibrePlanet gratis. Applications for most LibrePlanet volunteer opportunities will be available soon, but if you would like to help with advance outreach (spreading the word about LibrePlanet in online communities, your networks, and by posting flyers at schools and community spaces), please email campaigns@fsf.org.

Free Software Award nominations

Each year at LibrePlanet, the FSF presents its annual Free Software Awards. Nominations for the awards are open through Sunday, November 5th, 2017 at 18:59 EST (23:59 UTC).

Promotional opportunities

LibrePlanet is a good place to spread the word about your organization to the free software community. You can sponsor LibrePlanet or have a table in our exhibit hall (or both!). Our exhibit hall is at the center of the LibrePlanet venue, and sponsors are highly visible at the conference and in our promotional materials. The FSF and LibrePlanet are heavily member-supported, and we appreciate the support of organizations that embrace free software. Apply to exhibit at LibrePlanet 2018 or email us at campaigns@fsf.org if you are interested in being a sponsor.

September 19, 2017 08:06 PM

FSF News

LibrePlanet free software conference celebrates 10th anniversary, CFP and registration open now

The call for proposals is open now, until November 2, 2017. General registration and exhibitor and sponsor registration are also open.

LibrePlanet is an annual conference for free software enthusiasts and anyone who cares about the intersection of technology and social justice. For the past nine years, LibrePlanet has brought together free software developers, policy experts, activists, hackers, students, and people who are at the beginning of their free software journeys. LibrePlanet 2018 will feature programming for all ages and experience levels.

LibrePlanet's 10th anniversary theme is "Freedom. Embedded." Embedded systems are everywhere, in cars, digital watches, traffic lights, and even within our bodies.

"Proprietary software is everywhere, its sinister aspects woven throughout the devices permeating our lives," said John Sullivan, FSF executive director. "We need to reverse the new norm that whomever sold us a device gets to embed their control over us in it forever -- instead, we need freedom embedded."

In a society reliant on embedded systems, how do we defend computer user freedom? How do we insist on copylefted code, protect ourselves against government and corporate surveillance, and move toward a freer world? For many people, digital freedom seems like a pipe dream. Can the free software community change the narrative and make free software the norm, instead of walled gardens, denial of the right to repair, and digital restrictions management (DRM)?

Call for Sessions

"The tenth LibrePlanet conference is a great time to think big," said Georgia Young, program manager at the FSF. "We hope session proposals will try to bring the free software movement to the next level, inviting in new ideas and welcoming a broad range of people to the movement."

Call for sessions applications are currently being accepted and are due by Thursday, November 2nd, 2017 at 10:00 EDT (14:00 UTC).

About LibrePlanet

LibrePlanet is the annual conference of the Free Software Foundation. What was once a small gathering of FSF members has grown into a larger event for anyone with an interest in the values of software freedom. LibrePlanet is always gratis for associate members of the FSF. To sign up for announcements about LibrePlanet 2018, visit https://www.libreplanet.org/2018.

Each year at LibrePlanet, the FSF presents its annual Free Software Awards. Nominations for the awards are open through Sunday, November 5th, 2017 at 18:59 EST (23:59 UTC).

For information on how your company or organization can exhibit at or be a sponsor of LibrePlanet 2018, email campaigns@fsf.org.

LibrePlanet 2017 was held at MIT from March 25-26, 2017. Nearly 400 attendees from all over the world came together for conversations, demonstrations, and keynotes centered around the theme of "The Roots of Freedom." You can watch videos from last year's conference, including the opening keynote, a look at the 21st century techno-surveillance state by Kade Crockford of the Massachusetts chapter of the ACLU.

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 and , 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

September 19, 2017 08:02 PM

Sylvain Beucler

dot-zed extractor

Following last week's .zed format reverse-engineered specification, Loïc Dachary contributed a POC extractor!
It's available at http://www.dachary.org/loic/zed/, it can list non-encrypted metadata without password, and extract files with password (or .pem file).
Leveraging on python-olefile and pycrypto, only 500 lines of code (test cases excluded) are enough to implement it :)

September 19, 2017 07:29 PM

FSF Events

John Sullivan to speak at freenode #live (Bristol, United Kingdom)

Free Software Foundation (FSF) executive director John Sullivan will be speaking at freenode #live (2017-10-28–29). His speech will be nontechnical and the public is encouraged to attend.

Speech topic and start time to be determined.

Location: At-Bristol Science Centre, Anchor Road, Harbourside, Bristol, BS1 5DB United Kingdom

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

September 19, 2017 05:01 PM

FSF Blogs

Friday Free Software Directory IRC meetup: September 22nd starting at 12:00 p.m. EDT/16:00 UTC

Participate in supporting the Directory by adding new entries and updating existing ones. We will be on IRC in the #fsf channel on irc.freenode.org.

Tens of thousands of people visit directory.fsf.org each month to discover free software. Each entry in the Directory contains a wealth of useful information, from basic category and descriptions, to providing detailed info about version control, IRC channels, documentation, and licensing info that has been carefully checked by FSF staff and trained volunteers.

While the Directory has been and continues to be a great resource to the world for over a decade now, it has the potential to be a resource of even greater value. But it needs your help!

On the 22nd of this month back in 1893, bicycle makers Charles and Frank Duryea showed off the first American automobile produced for sale by cruising through the streets of Springfield, Massachusetts. This momentous day requires two themes: first is CAD Software for the design of the parts, and second, in the modern car we can't overlook the navigation system.

If you are eager to help, and you can't wait or are simply unable to make it onto IRC on Friday, our participation guide will provide you with all the information you need to get started on helping the Directory today! There are also weekly Directory Meeting pages that everyone is welcome to contribute to before, during, and after each meeting.

September 19, 2017 02:41 PM

September 18, 2017

Christopher Allan Webber

DRM will unravel the Web

I'm a web standards author and I participate in the W3C. I am co-editor of the ActivityPub protocol, participate in a few other community groups and working groups, and I consider it an honor to have been able to participate in the W3C process. What I am going to write here though represents me and my feelings alone. In a sense though, that makes this even more painful. This is a blogpost I don't have time to write, but here I am writing it; I am emotionally forced to push forward on this topic. The W3C has allowed DRM to move forward on the web through the EME specification (which is, to paraphrase Danny O'Brien from the EFF, a "DRM shaped hole where nothing else but DRM fits"). This threatens to unravel the web as we know it. How could this happen? How did we get here?

Like many of my generation, I grew up on the web, both as a citizen of this world and as a developer. "Web development", in one way or another, has principally been my work for my adult life, and how I have learned to be a programmer. The web is an enormous, astounding effort of many, many participants. Of course, Tim Berners-Lee is credited for much of it, and deserves much of this credit. I've had the pleasure of meeting Tim on a couple of occasions; when you meet Tim it's clear how deeply he cares about the web. Tim speaks quickly, as though he can't wait to get out the ideas that are so important to him, to try to help you understand how wonderful and exciting this system it is that we can build together. Then, as soon as he's done talking, he returns to his computer and gets to hacking on whatever software he's building to advance the web. You don't see this dedication to "keep your hands dirty" in the gears of the system very often, and it's a trait I admire. So it's very hard to reconcile that vision of Tim with someone who would intentionally unravel their own work... yet by allowing the W3C to approve DRM/EME, I believe that's what has happened.

I had an opportunity to tell Tim what I think about DRM and EME on the web, and unfortunately I blew it. At TPAC (W3C's big conference/gathering of the standards minds) last year, there was a protest against DRM outside. I was too busy to take part, but I did talk to a friend who is close to Tim and was frustrated about the protests happening outside. After I expressed that I sympathized with the protestors (and that I had even indeed protested myself in Boston), I explained my position to my friend. Apparently I was convincing enough where they encouraged me to talk to Tim and offer my perspective; they offered to flag them down for a chat. In fact Tim and I did speak over lunch, but -- although we had met in person before -- it was my first time talking to Tim one-on-one, and I was embarassed for that first interaction would me to be talking about DRM and what I was afraid was a sore subject for him. Instead we had a very pleasant conversation about the work I was doing on ActivityPub and some related friends' work on other standards (such as Linked Data Notifications, etc). It was a good conversation, but when it was over I had an enormous feeling of regret that has been on the back of my mind since.

Here then, is what I wish I had said.

Tim, I have read your article on why the W3C is supporting EME, and that I know you have thought about it a great deal. I think you believe what you are doing what is right for the web, but I believe you are making an enormous miscalculation. You have fought long and hard to build the web into the system it is... unfortunately, I think DRM threatens to undo all that work so thoroughly that allowing the W3C to effectively green-light DRM for the web will be, looking back on your life, your greatest regret.

You and I both know the dangers of DRM: it creates content that is illegal to operate on using any of the tooling you or I will ever be able to write. The power of DRM is not in its technology but in the surrounding laws; in the United States through the DMCA it is a criminal offense to inspect how DRM systems work or to talk about these vulnerabilities. DRM is also something that clearly cannot itself be implemented as a standard; it relies on proprietary secrecy in order to be able to function. Instead, EME defines a DRM-shaped hole, but we all know what goes into that hole... unfortunately, there's no way for you or I to build an open and interoperable system that can fit in that EME hole, because DRM is antithetical to an interoperable, open web.

I think, from reading your article, that you believe that DRM will be safely contained to just "premium movies", and so on. Perhaps if this were true, DRM would still be serious but not as enormous of a threat as I believe it is. In fact, we already know that DRM is being used by companies like John Deere to say that you don't even own your own tractor, car, etc. If DRM can apply to tractors, surely it will apply to more than just movies.

Indeed, there's good reason to believe that some companies will want to apply DRM to every layer of the web. Since the web has become a full-on "application delivery system", of course the same companies that apply DRM to software will want to apply DRM to their web software. The web has traditionally been a book which encourages being opened; I learned much of how to program on the web through that venerable "view source" right-click menu item of web browsers. However I fully expect with EME that we will see application authors begin to lock down HTML, CSS, Javascript, and every other bit of their web applications down with DRM. (I suppose in a sense this is already happening with javascript obfuscation and etc, but the web itself was at least a system of open standards where anyone could build an implementation and anyone could copy around files... with EME, this is no longer the case.) Look at the prevelance of DRM in proprietary applications elsewhere... once the option of a W3C-endorsed DRM-route exists, do you think these same application developers will not reach for it? But I think if you develop the web with the vision of it being humanity's greatest and most empowering knowledge system, you must be against this, because if enough of the web moves over to this model the assumptions and properties of the web as we've known it, as an open graph to free the world, cannot be upheld. I also know the true direction you'd like the web to go, one of linked data systems (of which ActivityPub is somewhat quietly one). Do you think such a world will be possible to build with DRM? I for one do not see how it is possible, but I'm afraid that's the path down which we are headed.

I'm sure you've thought of these things too, so what could be your reason for deciding to go ahead with supporting DRM anyway? My suspicion is it's two things contributing to this:

  1. Fear that the big players will pick up their ball and leave. I suspect there's fear of another WHATWG, that the big players will simply pick up their ball and leave.
  2. Most especially, and related to the above, I suspect the funding and membership structure of the W3C is having a large impact on this. Funding structures tend to have a large impact on decision making, as a kind of Conway's Law effect. W3C is reliant on its "thin gruel" of funding from member organizations (which means that large players tend to have a larger say in how the web is built today).

I suspect this is most of all what's driving the support for DRM within the W3C. However, I know a few W3C staff members who are clearly not excited about DRM, and two who have quit the organization over it, so it's not that EME is internally a technology that brings excitement to the organziation.

I suppose at this point, this is where I diverge with the things I could have said in the past and did not say as an appeal to not allow the W3C to endorse EME. Unfortunately, today EME made it to Recommendation. At the very least, I think the W3C could have gone forward with the Contributor Covenant proposed by the EFF, but did not. This is an enormous disappointment.

What do we do now? I think the best we can do at this point, as individual developers and users, is speak out against DRM and refuse to participate in it.

And Tim, if you're listening, perhaps there's no chance now to stop EME from becoming a Recommendation. But your voice can still carry weight. I encourage you to join in speaking out against the threat DRM brings to unravel the web.

Perhaps if we speak loud enough, and push hard enough, we can still save the web we love. But today is a sad say, and from here I'm afraid it is going to be an uphill battle.

EDIT: If you haven't yet read Cory Doctorow / the EFF's open letter to the W3C, you should.

by Christopher Allan Webber at September 18, 2017 07:30 PM

September 17, 2017

texinfo @ Savannah

Texinfo 6.5 released

We have released version 6.5 of Texinfo, the GNU documentation format.

It's available via a mirror (xz is much smaller than gz, but gz is available too just in case):

https://ftp.gnu.org/gnu/texinfo/texinfo-6.5.tar.xz
https://ftp.gnu.org/gnu/texinfo/texinfo-6.5.tar.gz

Please send any comments to bug-texinfo@gnu.org.

Full announcement:

http://lists.gnu.org/archive/html/info-gnu/2017-09/msg00007.html

by Gavin D. Smith at September 17, 2017 07:43 PM

September 15, 2017

health @ Savannah

GNU Health 3.2.3 patchset released

Dear community

GNU Health 3.2.3 patchset has been released !

Priority: High

Table of Contents

  • About GNU Health Patchsets
  • Updating your system with the GNU Health control Center
  • Installation notes
  • List of issues related to this patchset

About GNU Health Patchsets

We provide "patchsets" to stable releases. Patchsets allow applying bug fixes and updates on production systems. Always try to keep your production system up-to-date with the latest patches.

Patches and Patchsets maximize uptime for production systems, and keep your system updated, without the need to do a whole installation.

For more information about GNU Health patches and patchsets you can visit https://en.wikibooks.org/wiki/GNU_Health/Patches_and_Patchsets

NOTE: Patchsets are applied on previously installed systems only. For new, fresh installations, download and install the whole tarball (ie, gnuhealth-3.2.3.tar.gz)

Updating your system with the GNU Health control Center

Starting GNU Health 3.x series, you can do automatic updates on the GNU Health and Tryton kernel and modules using the GNU Health control center program.

Please refer to the administration manual section ( https://en.wikibooks.org/wiki/GNU_Health/Control_Center )

The GNU Health control center works on standard installations (those done following the installation manual on wikibooks). Don't use it if you use an alternative method or if your distribution does not follow the GNU Health packaging guidelines.

Summary of this patchset

Version 3.2.3 provides the updated gnuhealth-control and gnuhealth-setup programs, the latter including the bcrypt library. It also fixes a duplicated field on the tree view for the prescription line.

Refer to the List of issues related to this patchset for a comprehensive list of fixed bugs.

Installation Notes

You must apply previous patchsets before installing this patchset. If your patchset level is 3.2.2, then just follow the general instructions.
You can find the patchsets at GNU Health main download site at GNU.org (https://ftp.gnu.org/gnu/health/)

Follow the general instructions at

Additionally, if you are applying the patch (not a new installation) you need to install locally the bcrypt package.

Login as the "gnuhealth" admin user, and execute :

  • Stop the GNU Health Tryton instance
  • Install the Bcrypt package

$ pip3 install --user bcrypt

  • Restart the GNU Health Tryton server

List of issues and tasks related to this patchset

  • bug #52020: Missing bcrypt dependency in gnuhealth-setup
  • bug #52038: Field history is repeated in the tree view of the prescription line

For detailed information about each issue, you can visit https://savannah.gnu.org/bugs/?group=health
For detailed information about each task, you can visit https://savannah.gnu.org/task/?group=health

by Luis Falcon at September 15, 2017 06:40 PM

September 14, 2017

FSF Blogs

Friday Free Software Directory IRC meetup: September 15th starting at 12:00 p.m. EDT/16:00 UTC

Participate in supporting the Directory by adding new entries and updating existing ones. We will be on IRC in the #fsf channel on irc.freenode.org.

Tens of thousands of people visit directory.fsf.org each month to discover free software. Each entry in the Directory contains a wealth of useful information, from basic category and descriptions, to providing detailed info about version control, IRC channels, documentation, and licensing info that has been carefully checked by FSF staff and trained volunteers.

While the Directory has been and continues to be a great resource to the world for over a decade now, it has the potential to be a resource of even greater value. But it needs your help!

This week we're back to adding new packages to the Directory. We'll also be checking in on the import project, which will allow for the automated creation of entries from repositories based on their previously vetted licenses, and which could grow the Directory by a massive amount. The more the merrier! That goes for software packages, but also for friends joining us for the weekly meeting. Hope to see you all there.

If you are eager to help, and you can't wait or are simply unable to make it onto IRC on Friday, our participation guide will provide you with all the information you need to get started on helping the Directory today! There are also weekly Directory Meeting pages that everyone is welcome to contribute to before, during, and after each meeting.

September 14, 2017 07:12 PM

lightning @ Savannah

GNU lightning 2.1.1 released!

GNU lightning is a library to aid in making portable programs
that compile assembly code at run time.

Development:
http://git.savannah.gnu.org/cgit/lightning.git

Download release:
ftp://ftp.gnu.org/gnu/lightning/lightning-2.1.1.tar.gz

2.1.1 adds support for jit_allocar for runtime alloca, contrary to
jit_allocai that provides a static offset allocation.
2.1.1 also adds support for jit_va_start, jit_va_arg, jit_va_arg_d
and jit_va_end, that implements C compatible varargs functions.
Note: alpha, hppa, mips (n32 abi), ppc (Darwin abi) and sparc ports
are no longer supported due to lack of a test environment.

------------------------------------------------------------------------

ia64:
o Implement cache flush.
o Do not use a dangling pointer for double to integer copy.

x86:
o Correct issues in load and store in the x32 abi.

generic:
o Correct Fibonacci number generation examples.
o Correct wrong jit_movr simplification.
o Correct wrong live register information for some complex patterns.
o Adapt for binutils 2.29.

by Paulo César Pereira de Andrade at September 14, 2017 05:58 PM

September 13, 2017

www @ Savannah

FSF Blogs

Only a short time left to pre-order the Talos II; pre-orders end September 15th

We wrote previously about why you should support the Talos II from Raptor Engineering. The pre-order period for the Talos II is almost over. Making a pre-order will help them to launch this much-needed system. The goal for the folks at Raptor Engineering has always been to gain Respects Your Freedom certification. We certified a lot of new devices this year, and if we want to keep seeing those numbers increase, then it is critical that we support projects like this. As we said in our last post:

The unfortunate reality is that x86 computers come encumbered with built-in low-level backdoors like the Intel Management Engine, as well as proprietary boot firmware. This means that users can't gain full control over their computers, even if they install a free operating system.

While people are currently working to overcome the Intel Management Engine problem, each new generation of Intel CPUs is a new problem. Even if the community succeeds fully with one generation, it has to start over with the next one. This is precisely why the Talos II is important. As we said previously:

For the future of free computing, we need to build and support systems that do not come with such malware pre-installed, and the Power9-based Talos II promises to be a great example of just such a system. Devices like this are the future of computing that Respects Your Freedom.

You should help make the Talos II a success by making a pre-order by September 15th. The FSF Licensing & Compliance Lab will have to do another evaluation once it is actually produced to be sure it meets our certification standards, but we have high hopes. Here is what you can do to help:

September 13, 2017 05:42 PM

gnuastro @ Savannah

Gnuastro 0.4 released

I am happy to announce that the fourth release of Gnuastro now available.

GNU Astronomy Utilities (Gnuastro) is an official GNU package consisting of various command-line programs and library functions for the manipulation and analysis of astronomical data. All the programs share the same basic command-line user interface for the comfort of both the users and developers. For the full list of Gnuastro's library and programs please see the links below, respectively:

https://www.gnu.org/s/gnuastro/manual/html_node/Gnuastro-library.html
https://www.gnu.org/s/gnuastro/manual/html_node/Gnuastro-programs-list.html

The emphasis in this release has mainly been on features to improve the user experience of Gnuastro's programs. The full list of major new/changed features in this release can be seen in the NEWS file and is also appended to this announcement below [*].

Here are the compressed sources for this release:
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.4.tar.gz (4.4MB)
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.4.tar.lz (3.0MB)

Here are the GPG detached signatures[**]:
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.4.tar.gz.sig
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.4.tar.lz.sig

Use a mirror for higher download bandwidth (may need a day or two to sync):
http://ftpmirror.gnu.org/gnuastro

Here are the MD5 and SHA1 checksums:
a5d68d008ee5de9197907a35b3002988 gnuastro-0.4.tar.gz
9b79efe278645c1510444bd42e48b83f gnuastro-0.4.tar.lz
c6113658a119a9de785b04f4baceb3f7e6560360 gnuastro-0.4.tar.gz
69317d10d13ac72fdaa627a03ed77a4e307d4cb7 gnuastro-0.4.tar.lz

I am very grateful to Vladimir Markelov for contributions to the code of this release and (in alphabetical order) to Marjan Akbari, Fernando Buitrago, Adrian Bunk, Antonio Diaz Diaz, Mosè Giordano, Stephen Hamer, Raúl Infante Sainz, Aurélien Jarno, Alan Lefor, Guillaume Mahler, William Pence, Ole Streicher, Ignacio Trujillo and David Valls-Gabaud for their great suggestions, help and bug reports that made this release possible.

Gnuastro 0.4 tarball was bootstrapped (built) with the following tools:

  • Texinfo 6.4
  • Autoconf 2.69
  • Automake 1.15.1
  • Libtool 2.4.6
  • Help2man 1.47.4
  • Gnulib v0.1-1593-g9d3e8e18d
  • Autoconf Archives v2017.03.21-138-g37a7575

Note that these are not installation dependencies, for those, please see
https://www.gnu.org/software/gnuastro/manual/html_node/Dependencies.html

Cheers,
Mohammad

--
Mohammad Akhlaghi,
Postdoctoral research fellow,
Centre de Recherche Astrophysique de Lyon (CRAL),
Observatoire de Lyon. 9, Avenue Charles André,
Saint Genis Laval (69230), France.

NEWS file for this release
New features
  • All programs: `.fit' is now a recognized FITS file suffix.
  • All programs: ASCII text files (tables) created with CRLF line terminators (for example text files created in MS Windows) are now also readable as input when necessary.
  • Arithmetic: now has a new `--globalhdu' (`-g') option which can be used once for all the input images.
  • MakeNoise: with the new `--sigma' (`-s') option, it is now possible to directly request the noise sigma or standard deviation. When this option is called, the `--background', `--zeropoint' and other option values will be ignored.
  • MakeProfiles: the new `--kernel' option can make a kernel image without the need to define a catalog. With this option, a catalog (or accompanying background image) must not be given.
  • MakeProfiles: the new `--pc', `--cunit' and `--ctype' options can be used to specify the PC matrix, CUNIT and CTYPE world coordinate system keywords of the output FITS file.
  • MakeProfiles: the new `distance' profile will save the radial distance of each pixel. This may be used to define your own profiles that are not currently supported in MakeProfiles.
  • MakeProfiles: with the new `--mcolisbrightness' ("mcol-is-brightness") option, the `--mcol' values of the catalog will be interpretted as total brightness (sum of pixel values), not magnitude.
  • NoiseChisel: with the new `--dilatengb' option, it is now possible to identify the connectivity of the final dilation.
  • Library: Functions that read data from an ASCII text file (`gal_txt_table_info', `gal_txt_table_read', `gal_txt_image_read') now also operate on files with CRLF line terminators.
Changed features
  • Crop: The new `--center' option is now used to define the center of a single crop. Hence the old `--ra', `--dec', `--xc', `--yc' have been removed. This new option can take multiple values (one value for each dimension). Fractions are also acceptable.
  • Crop: The new `--width' option is now used to define the width of a single crop. Hence the old `--iwidth', `--wwidth' were removed. The units to interpret the value to the option are specified by the `--mode' option. With the new `--width' option it is also possible to define a non-square crop (different widths along each dimension). In WCS mode, its units are no longer arcseconds but are the same units of the WCS (degrees for angles). `--width' can also accept fractions. So to set a width of 5 arcseconds, you can give it a value of `5/3600' for the angular dimensions.
  • Crop: The new `--coordcol' option is now used to determine the catalog columns that define coordinates. Hence the old `--racol', `--deccol', `--xcol', and `--ycol' have been removed. This new option can be called multiple times and the order of its calling will be used for the column containing the center in the respective dimension (in FITS format).
  • MakeNoise: the old `--stdadd' (`-s') option has been renamed to `--instrumental' (`-i') to be more clear.
  • MakeProfiles: The new `--naxis' and `--shift' options can take multiple values for each dimension (separated by a comma). This replaces the old `--naxis1', `--naxis2' and `--xshift' and `--yshift' options.
  • MakeProfiles: The new `--ccol' option can take the center coordinate columns of the catalog (in multiple calls) and the new `--mode' option is used to identify what standard to interpret them in (image or WCS). Together, these replace the old `--xcol', `--ycol', `--racol' and `--deccol'.
  • MakeProfiles: The new `--crpix', `--crval' and `--cdelt' options now accept multiple values separated by a comma. So they replace the old `--crpix1', `--crpix2', `--crval1', `--crval2' and `--resolution' options.
  • `gal_data_free_contents': when the input `gal_data_t' is a tile, its `array' element will not be freed. This enables safe usage of this function (and thus `gal_data_free') on tiles without worrying about the memory block associated with the tile.
  • `gal_box_bound_ellipse' is the new name for the old `gal_box_ellipse_in_box' (to be more clear and avoid repetition of the term `box'). The input position angle is now also in degrees, not radians.
  • `gal_box_overlap' now works on data of any dimensionality and thus also needs the number of dimensions (elements in each input array).
  • `gal_box_border_from_center' now accepts an array of coordinates as one argument and the number of dimensions as another. This allows it to work on any dimensionality.
  • `gal_fits_img_info' now also returns the name and units of the dataset (if they aren't NULL). So it takes two extra arguments.
  • `gal_wcs_pixel_scale' now replaces the old `gal_wcs_pixel_scale_deg', since it doesn't only apply to degrees. The pixel scale units are defined by the units of the WCS.
  • `GAL_TILE_PARSE_OPERATE' (only when `OTHER' is given) can now parse and operate on different datasets independent of the size of allocated block of memory (the tile sizes of `IN' and `OTHER' have to be identical, but not their allocated blocks of memory). Until now, it was necessary for the two blocks to have the same size and this is no longer the case.
Bug fixes
  • MakeProfiles long options on 32bit big endian systems (bug #51341).
  • Pure rotation around pixel coordinate (0,0) (bug #51353).
  • NoiseChisel segfault when no usable region for sky clumps (bug #51372).
  • Pixel scale measurement when dimension scale isn't equal or doesn't decrease (bug #51385).
  • Improper types for function code in MakeProfiles (bug #51467).
  • Crashes on 32-bit and big-endian systems (bug #51476).
  • Warp's align matrix when second dimension must be reversed (bug #51536).
  • Reading BZERO for unsigned 64-bit integers (bug #51555).
  • Arithmetic with one file and no operators (bug #51559).
  • NoiseChisel segfault when detection contains no clumps (bug #51906).
Checking integrity

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:

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

and rerun the 'gpg --verify' command.

by Mohammad Akhlaghi at September 13, 2017 04:07 PM

FSF Events

Donald Robertson, III - "History of control: The past and future of Digital Restrictions Management" (SeaGL, Seattle, WA)

FSF licensing & compliance manager Donald Robertson, III, will be speaking at the SeaGL (2017-10-06–07).

The talk will give an overview of the history of Digital Restrictions Management (DRM), from codes and passwords for ancient video games to remote attestation spyware and beyond. It will provide the listener with a perspective on the true purpose of DRM, which throughout its history has always been control over the user. While nominally DRM has something to do with copyright, in each step throughout its story we find again and again that domination of the user is its only 'success' and ultimate goal. This fact becomes glaringly obvious as we move to the era of DRM enforcement of laws, where governments try to control citizens by rewriting digital reality. The talk will conclude with what we are doing at the FSF to fight back, and what you can do to help.

Don's speech will be nontechnical, admission is gratis, and the public is encouraged to attend.

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

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

September 13, 2017 01:46 PM

Molly de Blanc - "A division of labor: Attempting to measure free software" (SeaGL, Seattle, WA)

FSF campaigns manager Molly de Blanc will be speaking at SeaGL (2017-10-06–07).

We like to think that diversity has increased over time--contributors have stuck around as they age, students are excited to get started, initiatives are making space for people of color, trans* individuals, women, and other groups underrepresented in free software. We like to think we are doing better at recognizing the wide range of contributions and that more people are getting involved from all spheres of skill type, level, and experience.
But is this true? Molly de Blanc, a free software activist with a fondness for numbers and data, analyzed the results from four community surveys from 2003, 2013, 2016, and 2017 (as well as other bits of data around the internet). With fourteen (incomplete) years of community data, she'll attempt to quantify the ways the make up of free software has changed, where we're not doing as well as we'd like, and how we can do better.

We'll be asking (and answering) questions like:

  •   Is more non-coding work being done by women?
  •   Are people coding and also doing other things?
  •   Who is not coding? Who is doing nothing "technical?"
  •   Are we doing a good job trying to understand our community?
  • Molly's speech will be nontechnical, admission is gratis, and the public is encouraged to attend.

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

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

    September 13, 2017 01:35 PM

    September 12, 2017

    FSF Blogs

    The Apple is still rotten: Why you should avoid the new iPhone

    We get it: people like technology that they believe is easy to use, and costly, flashy-looking smartphones have become status symbols for many. The trouble is that the cost of owning an iPhone is even higher than the new iPhone's hefty $1000 USD price tag.

    Here are four reasons to avoid the new iPhone (and all things iOS):

    The iPhone despises free software

    While Apple is happy to make use of free software to construct its operating system, almost all of the software distributed with its devices is proprietary. Apple's refusal to release its source code violates your freedom to study, modify, and distribute software. Apple may claim to care about your privacy and security, but unless you can inspect Apple's source code, you have no way of verifying whether they're really looking out for you. And unless you have the right to install third-party or modified versions of the software on your device, you have no way to protect yourself when they aren't.

    Apple loves DRM

    Apple products, including the iPhone, are shackled with Digital Restrictions Management (DRM). Despite the fact that DRM restricts your freedom, preventing you from using computers as you please, Apple works hard to restrict you, even going so far as to argue that the anti-circumvention provisions of the U.S. Digital Millennium Copyright Act, which makes it illegal to tinker with an iPhone for any reason, should remain in place. Even Steve Jobs's opportunistic 2007 essay arguing against DRM has mysteriouly disappeared from Apple's Web site. They have a history of using demonization, concern trolling, and false claims about security to justify this.

    Apple is lawsuit-happy -- especially regarding software patents

    Apple has often ended up embroiled in lawsuits, both as plaintiff and defendant, and has several times unleashed their massive legal team on other smartphone creators, including suing HTC for allegedly infringing on multiple software patents relating to the iPhone in 2010, and spending the last six years battling Samsung in massive litigation encompassing more than 50 lawsuits worldwide covering a variety of alleged violations, including that of some Apple software patents. Some of these cases drag on today.

    We've written extensively about how these lawsuits could hurt free software, causing free software developers to shy away from any ideas that might expose them to a patent infringement lawsuit. The FSF advocates for the elimination of all software patents.

    Apple has worked hard to take away their customers' right to repair

    Many people like to tinker with things they own, to understand how they work, modify them in ways that make them more useful, or to extend their usefulness through repair. Though the four freedoms of free software do not encompass hardware, restriction of the right to repair often goes hand in hand with nonfree code, and Apple is a prime example.

    Apple leads the charge among technology companies when it comes to removing your right to repair, through physical changes to their products and by lobbying for laws that make it illegal for you to modify devices that you own. Apple's physical changes include using non-standard screws and tools for their products, making it extremely difficult to open them up to examine, repair, or replace parts. Its legal efforts include attempting to kill a "Fair Repair" bill introduced by farmers and independent repair shops in Nebraska earlier this year. These measures by Apple negatively impact free software developers trying to reverse engineer support, or make modifications to the hardware that would allow free software to run on the devices.

    Apple's encryption is not trustworthy

    In 2016, the United States Federal Bureau of Investigation (FBI) tried to force Apple to help it unlock an iPhone 5c used by a person believed to have staged a terrorist attack in California. While it is good that Apple did not create a wide open general backdoor for the FBI which could've been exploited by others and for other purposes, they still conceal their encryption practices, so users cannot discern what's happening under the glass or verify Apple's claims.

    Part of Apple's security efforts include preventing unauthorized firmware from being installed on a device by verifying that all firmware updates are signed with a trusted key -- but the trusted key is Apple's, not yours. That means Apple is ultimately deciding what is "authorized" firmware -- you cannot. True security in the long term comes only from completely free software, and as security developer Matthew Garret argues, "If Apple genuinely value user privacy over Apple's control of a device" they should "allow users to remove Apple's validation keys and substitute their own."

    What can you do instead?

    We don't have a freedom-respecting drop-in replacement for the iPhone. Apple's government-subsidized DRM and massive legal intimidation team make developing and distributing a freedom-respecting smartphone very difficult. But we are nonetheless getting closer. You can have a solid, basic smartphone today by running Replicant, a free software version of Android. You can install it yourself on supported models, or buy one pre-installed from Technoethical. You can give the Replicant project a boost, and help them to implement missing features, by donating. Also, check out F-Droid, an app repository of exclusively free software for Android.

    Keep an eye on the Purism phone crowdfunding campaign -- they haven't yet fully committed, but they are trying very hard to provide a phone whose hardware does not require any proprietary software, and won't be locked down. If they do make such an announcement, you should support them as much as you can.

    Don't buy any iOS device, and let Tim Cook at Apple know why you won't.

    September 12, 2017 07:15 PM

    RMS article - "Why hackathons should insist on free software"

    Richard Stallman's latest article, “Why hackathons should insist on free software,” explains how free software, by its very nature, is the only software suited for hackathons.

    Like hackathons, free software strengthens community and facilitates cooperation. As long as hackathons do not insist on the use of free software exclusively, the “community spirit they are based on” will be at risk of being subverted. Beside egregious examples of hackathons set up for the benefit of specific companies, there are the seemingly benign cases of developers bringing to hackathons projects they don't explicitly say will be free—a practice that “undermines” the “community spirit.” Hackathons insisting on free software, and thereby insisting on cooperation in exchange for cooperation, is vital to “strengthen[ing] the community spirit they are based on.”

    RMS concludes by listing ways in which, “as an individual hackathon participant, you can support this principle [of cooperation]” and by calling on hackathons, and the schools that often host them, to issue to their participants clear directives that support computer users' freedom.

    September 12, 2017 04:05 PM

    September 11, 2017

    GNU Remotecontrol

    Newsletter – September 2017

    THIS MONTH…..

    • TRENDS
    • EYE CATCHING
    • FIRMWARE
    • WORK PACKAGE PHASES
    • THERMOSTAT DEVICE OPTIONS
    • PROJECT NEEDS
    • EXISTING CODE
    • LASTLY
    TRENDS

    United States Electricity Price per KWH
    Present and Past

    EYE CATCHING

    Demand Response
    An article Honeywell Lyric product line is now capable of providing Demand Response functionality. An article Tata Power Delhi Distribution and the Russian Federal Test Centre have signed a Memorandum of Understanding for development of Smart Grid technologies. An article Itron stock price has risen considerably since their purchase of Comverge. An announcement Honeywell has acquired Nextnine for their Industrial Automation and Control offering. An article Enel completed their acquisition of EnerNOC. A report Western Europe to invest $133.7 billion in Smart Grid infrastructure by 2027. A survey of electricity customer purchasing preferences. An article electricity providers are researching new options to communicate with their customers. A purchase battle is in play for Oncor between Elliott Management and Berkshire Hathaway. A set of recommendations to mature HVAC control systems. A report home automation will grow exponentially in the next five years. An additional report supports this growth claim. An article Smart Thermostats are gaining adoption in both North America and Europe. Microsoft has released their first Smart Thermostat. Nest has released a lower cost Smart Thermostat. A research project to identify Smart Home efficiency improvement opportunities.

    The second generation of the Smart Grid is occurring now. Financial strength is purchasing first generation organizations which have valuable resources but poor management. Hedge players are now in the market to advance their initial offerings and holdouts are now in the market. These actions are more about debt markets and financial engineering and less about energy markets and network engineering. History is clear on what is happening now and what will happen in a free market. Big money will make money by mass adoption. Proprietary does not feed mass adoption. Big money will move away from proprietary technology to make more money. Watch the Smart Grid, Demand Response, and Smart Thermostat markets move faster and faster to bring residential properties into Time of Use pricing.

    Smart Grid – Security
    A video describing the 2017 UK National Health Service cyberattack with comments at time stamp 50:40 stating the nature of the Smart Grid security construct today from the device perspective. The SANS reports of 13 June, 07 July, and 08 September 2017 identified credible evidence of electrical grid cyberattack vectors.

    There is now no doubt an electrical grid cyberattack will succeed. It is unclear when a cyberattack on the electrical grid will succeed. Hopefully, the attack will not cost as much as the evidence indicates it will in terms of outages and restoring electrical service.

    Feedback
    We received more responses from our June 2017 newsletter than any other edition in the past few years. Comments included increased understanding of the impact on electrical grid availability from cyberattack, along with desire not to use proprietary technologies in the residential markets from fear an electronics manufacturer will not hold sufficient concern for the residential market. The feedback is encouraging to us, as it tells us the newsletter readers are now more engaged than we understood previously. The GNU remotecontrol team is thankful for the appreciation expressed to us by our newsletter readers.

    FIRMWARE

    GNU remotecontrol Firmware section of the software project had a rough summer regarding development efforts. We lost some resources due to Hurricane Harvey. We had some developers take employer mandated travel. We had a development environment migration effort stall due to little free time to complete the migration. We need more time, more people, or both. We will get there, but it will take longer with the available resources now recovering from team resource depletion and free time changes.

    THERMOSTAT DEVICE OPTIONS

    We shared in our March 2017 newsletter edition of our new section to both identify and discuss available Smart Thermostat options in consideration with internationally accepted technology standards. This section provides insight into each offering as new information becomes available.

    Carrier
    No new findings.

    Ecobee
    No new findings.

    Honeywell
    No new findings.

    Microsoft
    No information yet on their newest offering.

    Nest
    No information yet on their newest offering.

    Sensi
    No new findings.

    WORK PACKAGE PHASES

    GNU remotecontrol accomplishes productive work output through structured work packages. This approach helps to organize our efforts and keep things on track to achieve publishing our work. We have ten different phases for our work packages.

    GNU remotecontrol Work Package Phases

    Order Label Name
    1 REQ Requirements
    2 DSG Design
    3 DEV Development
    4 UNT Unit Testing
    5 SYS System Testing
    6 UAT User Acceptance Testing
    7 DOC Documentation
    8 RLS Release
    9 TRN Training
    10 SPT Support

    The GNU remotecontrol team does not perform any work output outside of structured work packages.

    PROJECT NEEDS

    Staffing
    GNU remotecontrol Project Help Wanted
    .

    New Thermostats
    Many people have asked us about adding other types of thermostats to GNU remotecontrol. There are three questions that need to be answered before we can offer GNU remotecontrol support for any IP thermostat. These questions are:

    • How to CONNECT to it (NETWORK).
    • How to READ from it (CODE).
    • How to WRITE to it (CODE).

    It is our hope to have dozens and dozens of thermostat types that work with GNU remotecontrol.

    EXISTING CODE

    Bugs
    We have 0 new bugs and 0 fixed bugs since our last Blog posting. Please review these changes and apply to your GNU remotecontrol installation, as appropriate.

    Tasks
    We have 0 new tasks and 0 completed tasks since our last Blog posting. Please review these changes and apply to your GNU remotecontrol installation, as appropriate.

    LASTLY

    Whatever you do…..don’t get beat up over your Energy Management strategy. GNU remotecontrol is here to help simplify your life, not make it more complicated. Talk to us if you are stuck or cannot figure out the best option for your GNU remotecontrol framework. The chances are the answer you need is something we have already worked through. We would be happy to help you by discussing your situation with you.

    …..UNTIL NEXT MONTH!

    Why the Affero GPL?

    GNU Affero General Public License LOGO

    GNU remotecontrol LOGO


    by gnuremotecontrol at September 11, 2017 09:57 PM

    FSF Blogs

    Free Software Directory meeting recap for September 8th, 2017

    Every week free software activists from around the world come together in #fsf on irc.freenode.org to help improve the Free Software Directory. This recaps the work we accomplished at the Friday, September 8th, 2017 meeting.

    Last week we had a Star Trek theme, focusing on physics entries. Many of the entries in the category were relatively up to date, with almost all having been reviewed within the last few years. It may not be as exciting as adding new entries to the Directory, but this work is just as critical for ensuring that the entries we do have remain current and useful.

    If you would like to help update the directory, meet with us every Friday in #fsf on irc.freenode.org from 12 p.m. to 3 p.m. EDT (16:00 to 19:00 UTC).

    September 11, 2017 03:41 PM

    September 10, 2017

    libffcall @ Savannah

    GNU libffcall 2.0 is released

    libffcall version 2.0 is released.

    New in this release:

    • The package now installs a library libffcall.{a,so}. It contains the 'avcall' and 'callback' packages. The libraries libavcall.{a,so} and libcallback.{a,so} are still installed as well, but are deprecated.
    • The installed libraries are now installed as shared libraries by default (except for libvacall, which is still a static library only).
    • The installed shared libraries are now properly versioned. This means that when installing with --enable-shared, upgrading to a newer version of libffcall will not break existing binaries.
    • The installed include files are now platform independent. This means that you can now install libffcall for different ABIs on the same system, using the same --prefix option but different --exec-prefix options for each ABI.
    • API changes in <trampoline.h>: The second argument of alloc_trampoline() is now a 'void * ', rather than a 'void '. The return value of trampoline_variable() is now a 'void * ', rather than a 'void '. The argument of trampoline_address(), trampoline_variable(), trampoline_data() is now a function pointer instead of a 'void *'.
    • Fixed a bug regarding floating-point arguments followed by non-floating-point arguments on the following platforms: Linux/arm, Linux/powerpc, Linux/s390.
    • Fixed a bug regarding structure returns on the following platforms: FreeBSD/i386, MinGW/i386, Linux/mips, IRIX/mips.
    • Added support for the following platforms: (Previously, a build on these platforms failed.) Cygwin/x86_64, MinGW/x86_64, MSVC (i386 and x86_64), HP-UX/hppa64, Linux/m68k.

    by Bruno Haible at September 10, 2017 05:11 PM

    Sylvain Beucler

    dot-zed archive file format

    TL,DR: I reverse-engineered the .zed encrypted archive format.
    Following a clean-room design, I'm providing a description that can be implemented by a third-party.
    Interested? :)

    (reference version at: https://www.beuc.net/zed/)

    .zed archive file format

    Introduction

    Archives with the .zed extension are conceptually similar to an encrypted .zip file.

    In addition to a specific format, .zed files support multiple users: files are encrypted using the archive master key, which itself is encrypted for each user and/or authentication method (password, RSA key through certificate or PKCS#11 token). Metadata such as filenames is partially encrypted.

    .zed archives are used as stand-alone or attached to e-mails with the help of a MS Outlook plugin. A variant, which is not covered here, can encrypt/decrypt MS Windows folders on the fly like ecryptfs.

    In the spirit of academic and independent research this document provides a description of the file format and encryption algorithms for this encrypted file archive.

    See the conventions section for conventions and acronyms used in this document.

    Structure overview

    The .zed file format is composed of several layers.

    • The main container is using the (MS-CFB), which is notably used by MS Office 97-2003 .doc files. It contains several streams:

      • Metadata stream: in OLE Property Set format (MS-OLEPS), contains 2 blobs in a specific Type-Length-Value (TLV) format:

        • _ctlfile: global archive properties and access list
          It is obfuscated by means of static-key AES encryption.
          The properties include archive initial filename and a global IV.
          A global encryption key is itself encrypted in each user entry.

        • _catalog: file list
          Contains each file metadata indexed with a 15-bytes identifier.
          Directories are supported.
          Full filename is encrypted using AES.
          File extension is (redundantly) stored in clear, and so are file metadata such as modification time.

      • Each file in the archive compressed with zlib and encrypted with the standard AES algorithm, in a separate stream.
        Several encryption schemes and key sizes are supported.
        The file stream is split in chunks of 512 bytes, individually encrypted.

      • Optional streams, contain additional metadata as well as pictures to display in the application background ("watermarks"). They are not discussed here.

    Or as a diagram:

    +----------------------------------------------------------------------------------------------------+
    | .zed archive (MS-CBF)                                                                              |
    |                                                                                                    |
    |  stream #1                         stream #2                       stream #3...                    |
    | +------------------------------+  +---------------------------+  +---------------------------+     |
    | | metadata (MS-OLEPS)          |  | encryption (AES)          |  | encryption (AES)          |     |
    | |                              |  | 512-bytes chunks          |  | 512-bytes chunks          |     |
    | | +--------------------------+ |  |                           |  |                           |     |
    | | | obfuscation (static key) | |  | +-----------------------+ |  | +-----------------------+ |     |
    | | | +----------------------+ | |  |-| compression (zlib)    |-|  |-| compression (zlib)    |-|     |
    | | | |_ctlfile (TLV)        | | |  | |                       | |  | |                       | | ... |
    | | | +----------------------+ | |  | | +---------------+     | |  | | +---------------+     | |     | 
    | | +--------------------------+ |  | | | file contents |     | |  | | | file contents |     | |     |
    | |                              |  | | |               |     | |  | | |               |     | |     |
    | | +--------------------------+ |  |-| +---------------+     |-|  |-| +---------------+     |-|     |
    | | | _catalog (TLV)           | |  | |                       | |  | |                       | |     |
    | | +--------------------------+ |  | +-----------------------+ |  | +-----------------------+ |     |
    | +------------------------------+  +---------------------------+  +---------------------------+     |
    +----------------------------------------------------------------------------------------------------+
    

    Encryption schemes

    Several AES key sizes are supported, such as 128 and 256 bits.

    The Cipher Block Chaining (CBC) block cipher mode of operation is used to decrypt multiple AES 16-byte blocks, which means an initialisation vector (IV) is stored in clear along with the ciphertext.

    All filenames and file contents are encrypted using the same encryption mode, key and IV (e.g. if you remove and re-add a file in the archive, the resulting stream will be identical).

    No cleartext padding is used during encryption; instead, several end-of-stream handlers are available, so the ciphertext has exactly the size of the cleartext (e.g. the size of the compressed file).

    The following variants were identified in the 'encryption_mode' field.

    STREAM

    This is the end-of-stream handler for:

    • obfuscated metadata encrypted with static AES key
    • filenames and files in archives with 'encryption_mode' set to "AES-CBC-STREAM"
    • any AES ciphertext of size < 16 bytes, regardless of encryption mode

    This end-of-stream handler is apparently specific to the .zed format, and applied when the cleartext's does not end on a 16-byte boundary ; in this case special processing is performed on the last partial 16-byte block.

    The encryption and decryption phases are identical: let's assume the last partial block of cleartext (for encryption) or ciphertext (for decryption) was appended after all the complete 16-byte blocks of ciphertext:

    • the second-to-last block of the ciphertext is encrypted in AES-ECB mode (i.e. block cipher encryption only, without XORing with the IV)

    • then XOR-ed with the last partial block (hence truncated to the length of the partial block)

    In either case, if the full ciphertext is less then one AES block (< 16 bytes), then the IV is used instead of the second-to-last block.

    CTS

    CTS or CipherText Stealing is the end-of-stream handler for:

    • filenames and files in archives with 'encryption_mode' set to "AES-CBC-CTS".
      • exception: if the size of the ciphertext is < 16 bytes, then "STREAM" is used instead.

    It matches the CBC-CS3 variant as described in Recommendation for Block Cipher Modes of Operation: Three Variants of Ciphertext Stealing for CBC Mode.

    Empty cleartext

    Since empty filenames or metadata are invalid, and since all files are compressed (resulting in a minimum 8-byte zlib cleartext), no empty cleartext was encrypted in the archive.

    metadata stream

    It is named 05356861616161716149656b7a6565636e576a33317a7868304e63 (hexadecimal), i.e. the character with code 5 followed by '5haaaaqaIekzeecnWj31zxh0Nc' (ASCII).

    The format used is OLE Property Set (MS-OLEPS).

    It introduces 2 property names "_ctlfile" (index 3) and "_catalog" (index 4), and 2 instances of said properties each containing an application-specific VT_BLOB (type 0x0041).

    _ctlfile: obfuscated global properties and access list

    This subpart is stored under index 3 ("_ctlfile") of the MS-OLEPS metadata.

    It consists of:

    • static delimiter 0765921A2A0774534752073361719300 (hexadecimal) followed by 0100 (hexadecimal) (18 bytes total)
    • 16-byte IV
    • ciphertext
    • 1 uint32be representing the length of all the above
    • static delimiter 0765921A2A0774534752073361719300 (hexadecimal) followed by "ZoneCentral (R)" (ASCII) and a NUL byte (32 bytes total)

    The ciphertext is encrypted with AES-CBC "STREAM" mode using 128-bit static key 37F13CF81C780AF26B6A52654F794AEF (hexadecimal) and the prepended IV so as to obfuscate the access list. The ciphertext is continuous and not split in chunks (unlike files), even when it is larger than 512 bytes.

    The decrypted text contain properties in a TLV format as described in _ctlfile TLV:

    • global archive properties as a 'fileprops' structure,

    • extra archive properties as a 'archive_extraprops' structure

    • users access list as a series of 'passworduser' and 'rsauser entries.

    Archives may include "mandatory" users that cannot be removed. They are typically used to add an enterprise wide recovery RSA key to all archives. Extreme care must be taken to protect these key, as it can decrypt all past archives generated from within that company.

    _catalog: file list

    This subpart is stored under index 4 ("_catalog") of the MS-OLEPS metadata.

    It contains a series of 'fileprops' TLV structures, one for each file or directory.

    The file hierarchy can be reconstructed by checking the 'parent_id' field of each file entry. If 'parent_id' is 0 then the file is located at the top-level of the hierarchy, otherwise it's located under the directory with the matching 'file_id'.

    TLV format

    This format is a series of fields :

    • 4 bytes for Type (specified as a 4-bytes hexadecimal below)
    • 4 bytes for value Length (uint32be)
    • Value

    Value semantics depend on its Type. It may contain an uint32be integer, a UTF-16LE string, a character sequence, or an inner TLV structure.

    Unless otherwise noted, TLV structures appear once.

    Some fields are optional and may not be present at all (e.g. 'archive_createdwith').

    Some fields are unique within a structure (e.g. 'files_iv'), other may be repeated within a structure to form a list (e.g. 'fileprops' and 'passworduser').

    The following top-level types that have been identified, and detailed in the next sections:

    • 80110600: fileprops, used for the file list as well as for the global archive properties
    • 001b0600: archive_extraprops
    • 80140600: accesslist

    Some additional unidentified types may be present.

    _ctlfile TLV

    • 80110600: fileprops (TLV structure): global archive properties
      • 00230400: archive_pathname (UTF-16LE string): initial archive filename (past versions also leaked the full pathname of the initial archive)
      • 80270200: encryption_mode (utf32be): 103 for "AES-CBC-STREAM", 104 for "AES-CBC-CTS"
      • 80260200: encryption_strength (utf32be): AES key size, in bytes (e.g. 32 means AES with a 256-bit key)
      • 80280500: files_iv (sequence of bytes): global IV for all filenames and file contents
    • 001b0600: archive_extraprops (TLV structure): additionnal archive properties (optional)
      • 00c40500: archive_creationtime (FILETIME): date and time when archive was initially created (optional)
      • 00c00400: archive_createdwith (UTF-16LE string): uuid-like structure describing the application that initialized the archive (optional)
        {00000188-1000-3CA8-8868-36F59DEFD14D} is Zed! Free 1.0.188.
    • 80140600: accesslist (TLV structure): describe the users, their key encryption and their permissions
      • 80610600: passworduser (TLV structure): user identified by password (0 or more)
      • 80620600: rsauser (TLV structure): user identified by RSA key (via file or PKCS#11 token) (0 or more)
      • Fields common to passworduser and rsauser:
        • 80710400: login (UTF-16LE string): user name
        • 80720300: login_md5 (sequence of bytes): used by the application to search for a user name
        • 807e0100: priv1 (uchar): user privileges; present and set to 1 when user is admin (optional)
        • 00830200: priv2 (uint32be): user privileges; present and set to 2 when user is admin, present and set to 5 when user is a marked as mandatory, e.g. for recovery keys (optional)
        • 80740500: files_key_ciphertext (sequence of bytes): the archive encryption key, itself encrypted
        • 00840500: user_creationtime (FILETIME): date and time when the user was added to the archive
      • passworduser-specific fields:
        • 80760500: pbe_salt (sequence of bytes): salt for PBE
        • 80770200: pbe_iter (uint32be): number of iterations for PBE
        • 80780200: pkcs12_hashfunc (uint32be): hash function used for PBE and PBA key derivation
        • 80790500: pba_checksum (sequence of bytes): password derived with PBA to check for password validity
        • 807a0500: pba_salt (sequence of bytes): salt for PBA
        • 807b0200: pba_iter (uint32be): number of iterations for PBA
      • rsauser-specific fields:
        • 807d0500: certificate (sequence of bytes): user X509 certificate in DER format

    _catalog TLV

    • 80110600: fileprops (TLV structure): describe the archive files (0 or more)
      • 80300500: file_id (sequence of bytes): a 16-byte unique identifier
      • 80310400: filename_halfanon (UTF-16LE string): half-anonymized filename, e.g. File1.txt (leaking filename extension)
      • 00380500: filename_ciphertext (sequence of bytes): encrypted filename; may have a trailing NUL byte once decrypted
      • 80330500: file_size (uint64le): decompressed file size in bytes
      • 80340500: file_creationtime (FILETIME): file creation date and time
      • 80350500: file_lastwritetime (FILETIME): file last modification date and time
      • 80360500: file_lastaccesstime (FILETIME): file last access date and time
      • 00370500: parent_directory_id (sequence of bytes): file_id of the parent directory, 0 is top-level
      • 80320100: is_dir (uint32be): 1 if entry is directory (optional)

    Decrypting the archive AES key

    rsauser

    The user accessing the archive will be authenticated by comparing his/her X509 certificate with the one stored in the 'certificate' field using DER format.

    The 'files_key_ciphertext' field is then decrypted using the PKCS#1 v1.5 encryption mechanism, with the private key that matches the user certificate.

    passworduser

    An intermediary user key, a user IV and an integrity checksum will be derived from the user password, using the deprecated PKCS#12 method as described at rfc7292 appendix B.

    Note: this is not PKCS#5 (nor PBKDF1/PBKDF2), this is an incompatible method from PKCS#12 that notably does not use HMAC.

    The 'pkcs12_hashfunc' field defines the underlying hash function. The following values have been identified:

    • 21: SHA-1
    • 22: SHA-256

    PBA - Password-based authentication

    The user accessing the archive will be authenticated by deriving an 8-byte sequence from his/her password.

    The parameters for the derivation function are:

    • ID: 3
    • 'pba_salt': the salt, typically an 8-byte random sequence
    • 'pba_iter': the iteration count, typically 200000

    The derivation is checked against 'pba_checksum'.

    PBE - Password-based encryption

    Once the user is identified, 2 new values are derived from the password with different parameters to produce the IV and the key decryption key, with the same hash function:

    • 'pbe_salt': the salt, typically an 8-bytes random sequence
    • 'pbe_iter': the iteration count, typically 100000

    The parameters specific to user key are:

    • ID: 1
    • size: 32

    The user key needs to be truncated to a length of 'encryption_strength', as specified in bytes in the archive properties.

    The parameters specific to user IV are:

    • ID: 2
    • size: 16

    Once the key decryption key and the IV are derived, 'files_key_ciphertext' is decrypted using AES CBC, with PKCS#7 padding.

    Identifying file streams

    The name of the MS-CFB stream is derived by shuffling the bytes from the 'file_id' field and then encoding the result as hexadecimal.

    The reordering is:

    Initial  offset: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    Shuffled offset: 3 2 1 0 5 4 7 6 8 9 10 11 12 13 14 15
    

    The 16th byte is usually a NUL byte, hence the stream identifier is a 30-character-long string.

    Decrypting files

    The compressed stream is split in chunks of 512 bytes, each of them encrypted separately using AES CBS and the global archive encryption scheme. Decryption uses the global AES key (retrieved using the user credentials), and the global IV (retrieved from the deobfuscated archive metadata).

    The IV for each chunk is computed by:

    • expressing the current chunk number as little endian on 16 bytes
    • XORing it with the global IV
    • encrypting with the global AES key in ECB mode (without IV).

    Each chunk is an independent stream and the decryption process involves end-of-stream handling even if this is not the end of the actual file. This is particularly important for the CTS handler.

    Note: this is not to be confused with CTR block cipher mode of operation with operates differently and requires a nonce.

    Decompressing files

    Compressed streams are zlib stream with default compression options and can be decompressed following the zlib format.

    Test cases

    Excluded for brevity, cf. https://www.beuc.net/zed/#test-cases.

    Conventions and references

    Feedback

    Feel free to send comments at beuc@beuc.net. If you have .zed files that you think are not covered by this document, please send them as well (replace sensitive files with other ones). The author's GPG key can be found at 8FF1CB6E8D89059F.

    Copyright (C) 2017 Sylvain Beucler

    Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.

    September 10, 2017 01:50 PM

    September 08, 2017

    FSF Blogs

    Support the Talos II, a candidate for Respects Your Freedom certification, by pre-ordering by September 15

    We've previously supported the work of the folks at Raptor Engineering. This time, rather than a crowdfunding effort, we are asking you to support their work by pre-ordering the Talos II. The system comes in a variety of forms to meet your needs, from a workstation to rack-mounted to the board by itself. Raptor Engineering has put in a great deal of effort researching and prototyping this system, and now it is ready for prime time. The Talos II is great for any hacker who needs a powerful machine, perfect for developing even more free software.

    The Talos II is the first system to support PCIe 4.0, which offers lower power consumption and higher performance. To pair with this increased performance, the Talos II comes with plenty of slots for DDR4 RAM, so you can order (or add later) as much as you need. Of course, we can't forget about the 4-core IBM Power9 CPU. You can even go with more than one for extra processing power. By pre-ordering a Talos II, you could be one of the first users to own a Power9-based system.

    Why is that such a big deal? The unfortunate reality is that x86 computers come encumbered with built-in low-level backdoors like the Intel Management Engine, as well as proprietary boot firmware. This means that users can't gain full control over their computers, even if they install a free operating system. Developers are working hard to fix these issues and getting closer every day, but for the time being, this is why many current Respects Your Freedom (RYF) offerings are refurbished older devices. For the future of free computing, we need to build and support systems that do not come with such malware pre-installed, and the Power9-based Talos II promises to be a great example of just such a system. Devices like this are the future of computing that Respects Your Freedom.

    That is Raptor Engineering's ultimate goal as well, to create a machine that can pass RYF certification. They've already been working with us on the details, and things are looking good. We'll have to do another evaluation once it is actually produced to be sure it meets our certification standards, but we have high hopes. Here is what you can do to help:

    September 08, 2017 03:35 PM

    September 07, 2017

    FSF Blogs

    Free Software Directory meeting recap for September 1st, 2017

    Every week free software activists from around the world come together in #fsf on irc.freenode.org to help improve the Free Software Directory. This recaps the work we accomplished at the Friday, September 1st, 2017 meeting.

    Last week we had a "Back to School" theme, focusing on educational entries. Many of the entries in the category were relatively up to date, with almost all having been at least reviewed by last year's meeting with the same theme. It may not be as exciting as adding new entries to the Directory, but this work is just as critical for ensuring that the entries we do have remain current and useful.

    We also had a discussion about how to prevent people from choosing licenses that restrict commercial use. Such licenses are non-free, but there is a common misconception that non-commercial licenses are a good thing, like a nonprofit. It couldn't be further from the truth. Such licenses mean that even nonprofit groups can't use the work for things like fundraising, and no one can use the work if they only use freely licensed works. Lots more work needs to be done in this area in terms of educating people about non-commercial licenses.

    If you would like to help update the directory, meet with us every Friday in #fsf on irc.freenode.org from 12 p.m. to 3 p.m. EDT (16:00 to 19:00 UTC).

    September 07, 2017 04:16 PM

    gnucobol @ Savannah

    GnuCOBOL 2.2 released!

    Dear GnuCOBOL users,

    after almost 7 years of continual improvement and refinements since
    OpenCOBOL version 1.1 and 3 years after the release of GnuCOBOL 1.1,
    the GnuCOBOL team is proud to announce the formal release of
    GnuCOBOL 2.2.
    We now reached a substantial coverage of COBOL 85, 2002, 2014 standard
    and X/Open COBOL, supporting many extensions from IBM COBOL, MicroFocus
    COBOL, ACUCOBOL-GT and others.

    As always - more information can be found at:
    https://www.gnu.org/software/gnucobol/

    Official source kits can be downloaded from:
    https://ftp.gnu.org/gnucobol/

    Here's a list of the highlights of this release, especially for people
    that still use one of the last releases (OpenCOBOL 1.1 which is still
    included in many package managers or GnuCOBOL 1.1):

    > * New GnuCOBOL features (too much to list)
    >
    > ** User Defined Functions, FUNCTION-ID.
    >
    > ** New intrinsic functions
    >
    > ABSOLUTE-VALUE alias for ABS
    > CURRENCY-SYMBOL CURRENCY-SYMBOL of the current program
    > FORMATTED-CURRENT-DATE ISO 8601 datetime function
    > FORMATTED-DATE ISO 8601 datetime function
    > FORMATTED-DATETIME ISO 8601 datetime function
    > FORMATTED-TIME ISO 8601 datetime function
    > TEST-FORMATTED-DATETIME ISO 8601 datetime function
    > INTEGER-OF-FORMATTED-DATE date to integer
    > HIGHEST-ALGEBRAIC now implemented
    > LOWEST-ALGEBRAIC now implemented
    > LOCALE-COMPARE now implemented
    > NUMVAL-F now implemented
    > TEST-NUMVAL now implemented
    > TEST-NUMVAL-C now implemented
    > TEST-NUMVAL-F now implemented
    > LENGTH-AN alias for BYTE-LENGTH
    > MODULE-CALLER-ID return the name of the caller
    > MODULE-DATE current module: compilation date
    > MODULE-TIME current module: compilation time
    > MODULE-FORMATTED-DATE current module: formatted datetime
    > MODULE-ID current module: PROGRAM-ID
    > MODULE-PATH current module: path on compile time
    > MODULE-SOURCE current module: name on compile time
    > MONETARY-DECIMAL-POINT LOCALE based fiscal decimal point
    > MONETARY-THOUSANDS-SEPARATOR LOCALE based fiscal visual grouping
    > separator
    >
    > Note:
    > The functions that are actually available as intrinsic functions depend
    > on the -std used. Function names that aren't marked as intrinsic functions
    > by the current -std can be used freely as user defined words or
    > even as user defined functions.
    >
    > ** New system functions
    >
    > C$CALLEDBY return the name of the caller
    > CBL_GC_FORK fork current process (not on Windows)
    > CBL_GC_WAITPID wait for process to end
    > CBL_GC_GETOPT (CBL_OC_GETOPT) comand lineoption parser for COBOL
    > CBL_GC_PRINTABLE (C$PRINTABLE) check if character is printable
    > CBL_GC_HOSTED (CBL_OC_HOSTED) provides access to C extern variables,
    > like stdin, errno
    > CBL_GC_NANOSLEEP CBL_OC_NANOSLEEP
    > CBL_GET_SCR_SIZE get current terminal size - if any
    > CBL_READ_KBD_CHAR get character from terminal
    > CBL_SET_CSR_POS set current position on terminal
    > x'E4' clear terminal screen
    > x'E5' ring the bell
    >
    > ** many new / extended COBOL statements from COBOL2002/2014 and extensions
    > from different COBOL dialects
    >
    > ** more SWITCHes: from SWITCH-01 to SWITCH-36 and its variants from many
    > COBOL dialects
    >
    > ** more IEEE numeric types added, FLOAT-DECIMAL-16, FLOAT-DECIMAL-34, etc
    >
    > ** more literal types added, numeric boolean etc.
    >
    > ** most of the COBOL 2014 spec Compiler Directive Facility is in
    >
    > ** optional: stricter syntax checks
    >
    > ** refactored and extended compiler and runtime messages with available
    > translations (currently to Spanish, Portuguese and Dutch, partial to
    > German)
    >
    > ** screen IO: many extended ACCEPT DISPLAY and SCREEN SECTION changes
    >
    > ** Direct call interface for C:
    > CALL-CONVENTIONS for CALLs and PROCEDURE DIVISION
    > SIZE of parameters specified for CALL ... BY VALUE
    > RETURN NOTHING for calling void functions
    > RETURN ADDRESS OF VAR for calling functions returning a pointer
    > PROCEDURE DIVISION RETURNING OMITTED -> callable as void function
    >
    > ** Much, much more!
    >
    >
    > * New cobc options:
    >
    > ** New -std options:
    >
    > cobol2014 COBOL 2014 Standard
    > xopen X/Open COBOL Standard
    > mf-strict Micro Focus COBOL compatibility - strict
    > ibm-strict IBM COBOL compatibility - strict
    > ibm-strict MVS/VM COBOL compatibility - strict
    > acu ACUCOBOL-GT compatibility
    > acu-strict ACUCOBOL-GT compatibility - strict
    > bs2000 BS2000 COBOL compatibility (back again)
    > bs2000-strict BS2000 COBOL compatibility - strict
    > rm RM-COBOL compatibility
    > rm-strict RM-COBOL compatibility - strict
    >
    > Note:
    > The GnuCOBOL compiler tries to limit both the feature-set and reserved words
    > to the specified compiler when the "strict" dialects are used.
    > COBOL sources compiled with these dialects are therefore likely to compile
    > with the specified compiler and vice versa: sources that were compiled on
    > the specified compiler should compile without any issues with GnuCOBOL.
    >
    > With the "non-strict" dialects GnuCOBOL will activate the complete
    > feature-set where it doesn't directly conflict with the specified dialect,
    > including reserved words and GnuCOBOL specific extensions.
    > COBOL sources compiled with these dialects therefore may work only
    > with GnuCOBOL. COBOL sources may need a change because of rich feature-set
    > and reserved words in GnuCOBOL, otherwise offending words may be removed
    > by `-fno-reserved=word`.
    > COBOL-85, X/Open COBOL, COBOL 2002 and COBOL 2014 are always "strict".
    >
    > ** New listing options:
    >
    > -t listing, -T wide listing, --tlines=lines, lines per page of listing
    > -Xref
    >
    > Note: -P, generate preprocessor listing, is still available (and improved)
    >
    > ** All compiler configuration flags may be set on command line
    > to override a specific setting of the current -std, see cobc --help
    >
    > ** All Warnings can be explicit enabled/disabled or even marked as error,
    > see cobc --help
    > -Wunreachable report on possible unreachable statements
    >
    > ** Options for the C compiler/linker:
    > -K <entry>, compile entry point as static (resolve at link time)
    > -A, add options to C compile phase
    > -Q, add options to C link phase
    >
    > ** Miscellaneous
    > -i -info, display build/environment
    > -D define symbol for Compiler Directive Facility
    > -j -job=args, run job after compile
    > input filename of '-' reads source from standard in
    > For more: see cobc --help
    >
    >
    > * New cobcrun options:
    >
    > -i -info, display build/environment
    > -r -runtime-env, display runtime configuration
    > -c -config, set runtime config from file
    > -M -module, set path/module name when looking for entry
    >
    >
    > * New build features
    >
    > make test downloads NIST testsuite if necessary
    > now usable with parallel builds (make -j4 test)
    > make checkall runs both the internal an NIST testsuite
    >
    > ** testsuite defaults to coloured output
    >
    > ** Windows(tm) Visual Studio build support files added,
    > options to validate the software generated with VS against both test suites
    >
    > ** removed maintainer mode - if files need a rebuild because of a change
    > they are always rebuild
    >
    > ** help2man, bison and flex are checked during configure,
    > if they need to be invoked and are missing a useful error message is given
    >
    > ** All files created by GnuCOBOL runtime use the same file permission settings
    > now: COB_FILE_MODE which was changed to 0666
    >
    > ** changed unix package name from "gnu-cobol" to "gnucobol"


    While many people have contributed special thanks go to Ron Norman, Edward Hart, Brian Tiffin, Dave Pitts, and Sergey Kashyrin and to everyone reporting issues and making suggestions.

    Happy coding,
    Simon

    by Edward Hart at September 07, 2017 11:42 AM