Planet GNU

Aggregation of development blogs from the GNU Project

September 30, 2016

freeipmi @ Savannah

FreeIPMI 1.5.4 Released

http://ftp.gnu.org/gnu/freeipmi/freeipmi-1.5.4.tar.gz

o Various changes/fixes in libipmiconsole
- If user retrieves file descriptor from ipmiconsole_ctx_fd,
user is required to close it. ipmiconsole_ctx_destroy no
longer closes it. This is to avoid a potential double close
which can be a problem for multithreaded applications. This
is a change in behavior, but we do not believe this will
affect most applications since most users close the file
descriptor under most scenarios anyways.
- ipmiconsole_ctx_destroy() should now be called to free
resources even if ipmiconsole_engine_teardown() has been
called. This has been done to create consistent behavior in
the API and avoid a former segfault possibility. This is a
change in behavior, but we do not believe this will affect
most applications since ipmiconsole_engine_teardown() is
only called when an application is being shutdown.
- The use of IPMICONSOLE_ENGINE_CLOSE_FD has been clarified in
the header file. Some of the prior text was unclear.
Behavior has not been changed.
o In ipmi-oem, support Intel get-bmc-services and set-bmc-
services commands.
o In ipmi-oem, support Gigabyte get-nic-mode and set-nic-mode
commands.
o Support Gigabyte MD90-FS0-ZB OEM SEL events.

by Albert Chu at September 30, 2016 10:45 PM

FSF Blogs

Libre Learn Lab: a summit on freely licensed resources for education

The keynote addresses will be delivered by the FSF’s own Richard M. Stallman, former Chief Open Education Advisor Andrew Marcinek and founder of HacKIDemia Stefania Druga. At the event, there will be a special tribute to Dr. Seymour Papert (the father of educational computing) by Dr. Cynthia Solomon.

The event will have workshops and presentations given by over 20 speakers, with perspectives from the free software, maker education, open education communities and more. The event will challenge participants with the theme “From Play to Policy," leading to next steps for the community.

Here are the details:

http://www.librelearnlab.org

Saturday, October 8th and Sunday, October 9th

MIT Tang Center

Cost: $25, or Free (as in beer) for students. Registration is optional if only attending Dr. Richard Stallman’s talk, “Education for Freedom with Libre Software.” If you plan to attend the rest of the event, please register.

September 30, 2016 07:38 PM

August and September 2016: photos from Pittsburgh and Fresno

RMS was in Pennsylvania last month and in California this month. He was

…in Pittsburgh, PA, on August 20th, at the Abstractions conference, on the invitation of Code & Supply, an organization that “nurture[s] Pittsburgh's growing tech community,” to give his speech “Free Software and Your Freedom” to an audience of over 800 professional developers involved in all aspects of development, from design to management to back-end engineering to front-end development and more:

(Photos under CC BY-SA 3.0. Photos courtesy of Jesse Reese.)

…and in Fresno, CA, where, on the invitation of the Clovis ACM Student Chapter, he gave his speech “What Makes Digital Inclusion Good or Bad?”1 on September 27th:

(Photos under CC BY-SA 3.0. First two photos courtesy of Bill Kerney; the others, of Mason Tijuanta.)

Please fill out our contact form, so that we can inform you about future events in and around Montreal, Pittsburgh, Amsterdam, and Oakdale, all of which RMS visited over the past two months. Please see www.fsf.org/events for a full list of all of RMS's confirmed engagements, and contact rms-assist@gnu.org if you'd like him to come speak.

Thank you to Justin, Mason, and Bill for having made these trips possible!


1. A recording of RMS's September 27th, 2016, Fresno, CA, speech will soon be available in our audio-video archive.

September 30, 2016 04:21 PM

September 29, 2016

FSF Blogs

Friday Working together for Free Software Directory IRC meetup: September 30th

Working together for free software

Join the FSF and friends Friday, September 30th, from 12pm to 3pm EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.

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

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 Free Software Directory has been and continues to be a great resource to the world over the past decade, it has the potential of being a resource of even greater value. But it needs your help!

This week we're having a special theme focusing on updating entries for collaborative software. Working together as a team takes tools that let you plan, communicate, and collaborate, so making sure people have great free software for these tasks is really important. Come collaborate with all of us in updating the directory entries for these tools!

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 FSD Meetings pages that everyone is welcome to contribute to before, during, and after each meeting.

September 29, 2016 07:34 PM

Licensing resource series: Free GNU/Linux distributions & GNU Bucks

A GNU buck

When Richard Stallman set out to create the GNU Project, the goal was to create a fully free operating system. Over 33 years later, it is now possible for users to have a computer that runs only free software. But even if all the software is available, putting it all together yourself, or finding a distribution that comes with only free software, would be quite the task. That is why we provide a list of Free GNU/Linux distributions.

Each distro on the list is commited to only distributing free software. With many to choose from, you can find a distro that meets your needs while respecting your freedom.

But with so much software making up an entire operating system, how is it possible to make sure that nothing nasty sneaks into the distro? That's where you, and GNU Bucks come in.

Our GNU Bucks program is a fun bounty program for finding licensing issues in endorsed distros. Helpful users and volunteers can file bugs with the distro if they happen to find some potentially non-free software. At the same time, they can email the FSF at report-nonfree@fsf.org. Once the maintainer of the distro verifies the issue, the reporter can receive a GNU Buck, signed by Richard Stallman.

Like many of our resources, we depend on users like you to keep our endorsed distributions list and GNU Bucks program up and running. Here's how you can help:

Enjoy this article? Check out our previous entry on the h-node hardware directory.

September 29, 2016 07:00 PM

September 28, 2016

FSF Events

Richard Stallman - "What Makes Digital Inclusion Good or Bad?" (Paris, France)

There are many threats to freedom in the digital society. They include massive surveillance, censorship, digital handcuffs, nonfree software that controls users, and the War on Sharing. Other threats come from use of web services. Finally, we have no positive right to do anything in the Internet; every activity is precarious, and can continue only as long as companies are willing to cooperate with it.

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

Location:

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

September 28, 2016 03:02 PM

FSF Blogs

Free Software Directory meeting recap for September 23rd, 2016

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 on the Friday, September 23rd, 2016 meeting.

This week we had a special theme of focusing on educational packages. The directory has quite a number of educational resources, so while we made great progress just working through the education category, we'll have to revisit this topic to get all the packages up to date. In going over some of the packages, the channel found several with broken links, another item that we'll want to focus on in future meetings.

In addition to our work on education packages, dachary set about on a new project to help automate updating versions for entries. Some resources already exist externally for tracking new versions and downloads, and dachary is working on a script to pull in that data and have it update the directory with less leg work. johnsu01 helped by putting together information and resources that can help to implement the script.

The meeting concluded with the channel deciding that next week's theme should focus on collaboration software. So next week's theme will be 'Working Together for Free Software'.

If you would like to help update entries related to education or just help update the directory in general, meet with us every Friday in #fsf on irc.freenode.org from 12pm to 3pm EDT (16:00 to 19:00 UTC).

September 28, 2016 02:12 PM

September 27, 2016

FSF Blogs

What do you have to say? Share it at LibrePlanet 2017

The call for proposals is open now, until November 14th, 2016. General registration, exhibitor registration, and volunteer applications will open soon.

Do you have a free software-related topic to teach or talk about? You've got until Wednesday, November 14th, 2016 at 18:59 EST (23:59 UTC) to submit your proposals.

Every year, LibrePlanet brings together developers, policy experts, activists, hackers and end users. It's a place to learn new skills, share accomplishments and face challenges to computer user freedom together as a community. If you're new to the community, check out last year's conference site and session videos, including the opening keynote, a conversation with NSA whistleblower Edward Snowden, for a taste of what's to come.

What kind of sessions are we looking for?

LibrePlanet is defined by its combination of technical talks with non-technical sessions on free software activism, culture and current events. You might:

  • Share an update on your free software project
  • Examine how free software can aid education, community organizing, medicine, art, or social movements
  • Teach a workshop on how to use a free software program or free hardware project
  • Lead a project "sprint" (a group work session)
  • Explore issues related to free software licensing and copyleft

This year, the theme of LibrePlanet is "The Roots of Freedom." This encompasses the historical "roots" of the free software movement -- the Four Freedoms, the GNU General Public License and copyleft, and a focus on strong security and privacy protections -- and the concept of roots as a strong foundation from which the movement grows. What aspect or advantage of free software is most valuable to you? What's arising from the movement's deep roots, and where? Can you identify exciting developments from the roots of freedom in education, business, activism, or the arts?

We're committed to increasing the participation of speakers belonging to groups traditionally underrepresented at free software conferences, including women and people of color. If you're comfortable sharing demographic information, there is an area for it on the proposal form, but your proposal will not be judged negatively if you leave those fields blank.

It's important to us to provide sessions that are friendly to newcomers, as well as those that help experienced hackers push their technical skills. Whatever your experience level or the experience level of your audience, we want to include your session! (As a corollary of this, we welcome sessions for kids or teens.)

What makes LibrePlanet so special is the thought-provoking, useful, and entertaining contributions from our speakers, attendees, exhibitors, and volunteers. We can't wait to hear your ideas. Submit a proposal now!

If you'd like to sponsor LibrePlanet, please email us at campaigns@fsf.org.

September 27, 2016 08:10 PM

FSF News

LibrePlanet returns March 25-26, 2017, call for proposals for annual free software conference now open

LibrePlanet is an annual conference for free software enthusiasts. The conference brings together software developers, policy experts, activists and computer users to learn skills, share accomplishments and face challenges to software freedom. Newcomers are always welcome, and LibrePlanet 2017 will feature programming for all ages and experience levels.

This year, the theme of LibrePlanet is "The Roots of Freedom." This encompasses the historical "roots" of the free software movement -- the Four Freedoms, the GNU General Public License and copyleft, and a focus on strong security and privacy protections -- and the concept of roots as a strong foundation from which the movement grows.

"LibrePlanet is an impactful, exciting free software conference. Attendance has grown each year, yet the community-minded atmosphere has grown even stronger," said John Sullivan, executive director of the FSF.

Call for Sessions

"We are looking forward to session proposals from people around the world, at all levels of speaking and technical experience. LibrePlanet features developers, users, students, activists, policymakers, and others. The free software movement depends on them all, and LibrePlanet 2017 will highlight their contributions," said Georgia Young, program manager at the FSF.

Call for sessions applications are currently being accepted and are due by Wednesday, November 14th, 2016 at 18:59 EST (23:59 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 2017, visit https://www.libreplanet.org/2017.

LibrePlanet 2016 was held at MIT from March 19-20, 2016. Over 370 attendees from all over the world came together for conversations, demonstrations, and keynotes centered around the theme of "Fork the System." You can watch videos from last year's conference at https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2016/, including the opening keynote, a conversation with NSA whistleblower Edward Snowden.

About the Free Software Foundation

The Free Software Foundation, founded in 1985, is dedicated to promoting computer users' right to use, study, copy, modify, and redistribute computer programs. The FSF promotes the development and use of free (as in freedom) software -- particularly the GNU operating system and its GNU/Linux variants -- and free documentation for free software. The FSF also helps to spread awareness of the ethical and political issues of freedom in the use of software, and its Web sites, located at fsf.org and gnu.org, are an important source of information about GNU/Linux. Donations to support the FSF's work can be made at https://donate.fsf.org. Its headquarters are in Boston, MA, USA.

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

Media Contacts

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

September 27, 2016 06:58 PM

FSF Events

Richard Stallman - "¿Tenemos que soportar más vigilancia que en la Unión Soviética?" (Seville, Spain)

La tecnología digital ha dado la posibilidad a los gobiernos de imponer una vigilancia que hubiera sido el sueño de Stalin, que nos impide comunicar con los periodistas sin ser detectados. Esta situación pone en peligro la democracia. Stallman analizará los límites a la vigilancia que impone la democracia y sugerirá métodos para diseñar sistemas que no recopilen información sobre todos los ciudadanos.

Esa charla de Richard Stallman no será técnica y será abierta al público; todos están invitados a asistir.

El título, el lugar exacto, y la hora de la charla serán determinados.

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

September 27, 2016 02:30 PM

Richard Stallman - « Devrions-nous avoir plus de surveillance que l'Union Soviétique ? » (Grenoble, France)

Ce discours de Richard Stallman ne sera pas technique, l'entrée sera libre, et tout le monde est invité à assister.

Lieu: Auditorium 1er étage, Grenoble Ecole de Management, 12 rue Pierre Semard, 38000 Grenoble, France

Veuillez complèter notre formulaire de contact, pour que nous puissions vous annoncer de futurs événements dans la région de grenobloise.

September 27, 2016 01:44 PM

Richard Stallman - "Reclaim Your Freedom with Free (Libre) Software" (Web Summit, Lisbon, Portugal)

Richard Stallman will be speaking at Web Summit (2016-11-07–10). His speech will be nontechnical, admission to the speech (not the conference) is gratis and requires no registration, and the public is encouraged to attend.

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

Location: Code Stage, Feira Internacional de Lisboa and Meo Arena, R. Bojador, 1998-010 Santa Maria dos Olivais

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

September 27, 2016 12:25 PM

September 23, 2016

FSF News

FSF Job Opportunity: Senior GNU/Linux Systems Administrator

This position, reporting to the executive director and working closely with the president, is an opportunity to make key contributions to the organization that started the GNU Project, launched the free software movement, and authored the GNU General Public License. The position is part of a technical team including a counterpart Senior Systems Administrator, a Web Developer, and many volunteers, tasked with maintaining and improving the FSF's technology infrastructure.

The ideal candidate will be a well-rounded GNU/Linux systems administrator who thrives on constant broad-based learning and problem-solving. They will also be familiar with the free software community and how it works; the position includes frequent contact and collaboration with volunteers and many GNU developers. Together, the Senior Systems Administrators have a great deal of influence over technology decisions within the FSF, and do crucial work empowering thousands of others to develop free software.

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

  • be a lead voice in the FSF's software system decision-making and policy positions in technical areas;

  • install and maintain fully free GNU/Linux systems on servers, desktops, laptops, and embedded devices;

  • support GNU developers and FSF representatives in their use of FSF-owned systems;

  • monitor and improve system security and network infrastructure;

  • spec, purchase, and maintain new equipment;

  • coordinate and mentor interns and volunteer systems administrators both in the office and remotely;

  • share in the on-call rotation to deal with core system emergencies;

  • blog and speak about the technologies used at the FSF;

  • run the tech at our annual LibrePlanet conference;

  • pitch in to help with organization-wide projects like our major fundraising activities;

  • fix bugs and submit patches upstream for the software we use, and

  • occasionally help design, write, and release new software when existing software doesn't fit the bill.

Applicants should have an undergraduate degree in a related field, at least five years of experience as a GNU/Linux systems administrator, and highlight their familiarity with any of the following:

  • apt-based GNU/Linux distributions;

  • TCP/IP, BGP, DNS, FTP, NFS, DHCP, iptables;

  • Libreboot and Coreboot;

  • Xen, KVM, CFEngine, RAID;

  • Drupal, Nginx, Apache2, CiviCRM, Plone, Zope, Mediawiki, Ikiwiki, Request Tracker, CAS, SQL, Squid;

  • Python, Bash, Perl, PHP, JavaScript, Ruby;

  • git, SVN, CVS;

  • Exim, Spamassassin, GNU Mailman; and

  • any physical hardware maintenance and hacking.

Because the FSF works globally and seeks to have our materials distributed in as many languages as possible, multilingual candidates will have an advantage. With our small staff of thirteen, each person makes a clear contribution. We work hard, but offer a humane and fun work environment at an office located in the heart of downtown Boston. The FSF is a mature but growing organization that provides great potential for advancement; existing staff get the first chance at any new job openings.

Benefits and Salary

This job is a union position that must be worked on-site at the FSF's downtown Boston office. The salary is fixed at $62,587/year and is non-negotiable. An on-site interview will be required with the executive director and other team members. Other benefits include:

  • full family health coverage through Blue Cross/Blue Shield's HMO Blue program,
  • subsidized dental plan,
  • four weeks of paid vacation annually,
  • seventeen paid holidays annually,
  • public transit commuting cost reimbursement,
  • 403(b) program through TIAA-CREF,
  • yearly cost-of-living pay increases (based on government guidelines), and
  • conference travel opportunities.

Application Instructions

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

  • cover letter,
  • resume, and
  • links to any published free software work.

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

Applications will be reviewed on a rolling basis until the position is filled. To guarantee consideration, submit your application by Tuesday, October 11, 2016, 9:00am EDT.

The FSF is an equal opportunity employer and will not discriminate against any employee or application for employment on the basis of race, color, marital status, religion, age, sex, sexual orientation, national origin, handicap, or any other legally protected status recognized by federal, state or local law. We value diversity in our workplace.

About the Free Software Foundation

The Free Software Foundation, founded in 1985, is dedicated to promoting computer users' right to use, study, copy, modify, and redistribute computer programs. The FSF promotes the development and use of free (as in freedom) software -- particularly the GNU operating system and its GNU/Linux variants -- and free documentation for free software. The FSF also helps to spread awareness of the ethical and political issues of freedom in the use of software, and its Web sites, located at fsf.org and gnu.org, are an important source of information about GNU/Linux. Donations to support the FSF's work can be made at https://donate.fsf.org. We are based in Boston, MA, USA.

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

September 23, 2016 08:24 PM

September 22, 2016

parallel @ Savannah

GNU Parallel 20160922 ('Christiania') released

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

New in this release:

  • parcat - cat files or fifos in parallel
  • 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 22, 2016 11:17 PM

FSF Blogs

Calling all free software supporters: It's time to renew our shop inventory!

The merchandise we sell there helps get the message of software freedom into the world, and the money we raise from sales is indispensable to our operation. Besides all that, the goods are useful, whether generating true random numbers or keeping you warm in cold weather. To help us accomplish these goals, we are asking you, the free software community, for your ideas about what you'd like to see in the shop.

Do you have a neat design idea for a new T-shirt? Think we could sell a bale of GNU-branded socks? Know what we could put on a sticker that would get the software freedom message across? Please add your idea(s) to the LibrePlanet Wiki's Ideas page. If you see that someone has already suggested your idea, feel free to add a "+1". OR: you can email your merchandise idea to the FSF Operations team directly at sales@fsf.org.

Together we can come up with the most practical and stylish ways to get the software freedom message out there. We'll be actively looking at submissions into early October, and hope to have designs done by the middle of that month.

Thanks in advance for your suggestions and thank you for supporting free software!

September 22, 2016 03:57 PM

Friday "Back to School" Free Software Directory IRC meetup: September 23rd

Join the FSF and friends Friday, September 23rd, from 12pm to 3pm EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.

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

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 Free Software Directory has been and continues to be a great resource to the world over the past decade, it has the potential of being a resource of even greater value. But it needs your help!

This week we're having a special theme focusing on updating entries for educational software. With school starting back up for many students, we want to make sure they have the free software tools they need for their studies are up to date and current in the Directory.

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 FSD Meetings pages that everyone is welcome to contribute to before, during, and after each meeting.

September 22, 2016 02:20 PM

September 21, 2016

Andy Wingo

is go an acceptable cml?

Yesterday I tried to summarize the things I know about Concurrent ML, and I came to the tentative conclusion that Go (and any Go-like system) was an acceptable CML. Turns out I was both wrong and right.

you were wrong when you said everything's gonna be all right

I was wrong, in the sense that programming against the CML abstractions lets you do more things than programming against channels-and-goroutines. Thanks to Sam Tobin-Hochstadt to pointing this out. As an example, consider a little process that tries to receive a message off a channel, and times out otherwise:

func withTimeout(ch chan int, timeout int) (result int) {
  var timeoutChannel chan int;
  var msg int;
  go func() {
    sleep(timeout)
    timeoutChannel <- 0
  }()
  select {
    case msg = <-ch: return msg;
    case msg = <-timeoutChannel: return 0;
  }
}

I think that's the first Go I've ever written. I don't even know if it's syntactically valid. Anyway, I think we see how it should work. We return the message from the channel, unless the timeout happens before.

But, what if the message is itself a composite message somehow? For example, say we have a transformer that reads a value from a channel and adds 1 to it:

func onePlus(in chan int) (result chan int) {
  var out chan int
  go func () { out <- 1 + <-in }()
  return out
}

What if we do a withTimeout(onePlus(numbers), 0)? Assume the timeout fires first and that's the result that select chooses. There's still that onePlus goroutine out there trying to read from in and at some point probably it will succeed, but nobody will read its value. At that point the number just vanishes into the ether. Maybe that's OK in certain domains, but certainly not in general!

What CML gives you is the ability to express an event (which is kinda like a possibility of sending or receiving a message on a channel) in such a way that we don't run into this situation. Specifically with the wrap combinator, we would make an event such that receiving on numbers would run a function on the received message and return that as the message value -- which is of course the same as what we have, except that in CML the select wouldn't actually read the message off unless it select'd that channel for input.

Of course in Go you could just rewrite your program, so that the select statement looks like this:

select {
  case msg = <-ch: return msg + 1;
  case msg = <-timeoutChannel: return 0;
}

But here we're operating at a lower level of abstraction; we were forced to intertwingle our concerns of adding 1 and our concerns of timeout. CML is more expressive than Go.

you were right when you said we're all just bricks in the wall

However! I was right in the sense that you can build a CML system on top of Go-like systems (though possibly not Go in particular). Thanks to Vesa Karvonen for this comment and the link to their proof-of-concept CML implementation in Clojure's core.async. I understand Vesa also has an implementation in F# as well.

Folks should read Vesa's code, after reading the Reppy papers of course; it's delightfully short and expressive. The basic idea is that event composition operators like choose and wrap build up data structures instead of doing things. The sync operation then grovels through those data structures to collect a list of channels to pass on to core.async's equivalent of select. When select returns, sync determines which event that chosen channel and message corresponds to, and proceeds to "activate" the event (and, as a side effect, possibly issue NACK messages to other channels).

Provided you can map from the chosen select channel/message back to the event, (something that core.async can mostly do, with a caveat; see the code), then you can build CML on top of channels and goroutines.

o/~ yeah you were wrong o/~

On the other hand! One advantage of CML is that its events are not limited to channel sends and receives. I understand that timeouts, thread joins, and maybe some other event types are first-class event kinds in many CML systems. Michael Sperber, current Scheme48 maintainer and functional programmer, tells me that simply wrapping events in channels+goroutines works but can incur a big performance overhead relative to supporting those event types natively, due to the need to make the new goroutine and channel and the scheduling costs. He quotes 10X as the overhead!

So although CML and Go appear to be inter-expressible, maybe a proper solution will base the simple channel send/receive interface on CML rather than the other way around.

Also, since these events are now second-class, it must be OK to lose these events, for the same reason that the naïve withTimeout could lose a message from numbers. This is the case for timeouts usually but maybe you have to think about this more, and possibly provide an infinite stream of the message. (Of course the wrapper goroutine would be collected if the channel becomes unreachable.)

you were right when you said this is the end

I've long wondered how contemporary musicians deal with the enormous, crushing weight of recorded music. I don't really pick any more but hoo am I feeling this now. I think for Guile, I will continue hacking on fibers in a separate library, and I think that things will remain that way for the next couple years and possibly more. We need more experience and more mistakes before blessing and supporting any particular formulation of highly concurrent programming. I will say though that I am delighted that we are able to actually do this experimentation on a library level and I look forward to seeing what works out :)

Thanks again to Vesa, Michael, and Sam for sharing their time and knowledge; all errors are of course mine. Happy hacking!

by Andy Wingo at September 21, 2016 09:29 PM

September 20, 2016

Andy Wingo

concurrent ml versus go

Peoples! Lately I've been navigating the guile-ship through waters unknown. This post is something of an echolocation to figure out where the hell this ship is and where it should go.

Concretely, I have been working on getting a nice lightweight concurrency system rolling for Guile. I'll write more about that later, but you can think of it as being modelled on Go, though built as a library. (I had previously described it as "Erlang-like", but that's just not accurate.)

Earlier this year at Curry On this topic was burning in my mind and of course when I saw the language-hacker fam there I had to bend their ears. My targets: Matthew Flatt, the amazing boundary-crossing engineer, hacker, teacher, researcher, and implementor of Racket, and Matthias Felleisen, the godfather of the PLT research family. I saw them sitting together and I thought, you know what, what can they have to say to each other? These people have been talking together for 30 years right? Surely they are actually waiting for some ignorant dude to saunter up to the PL genius bar, right?

So saunter I do, saying, "if someone says to you that they want to build a server that will handle 100K or so simultaneous connections on Racket, what abstraction do you tell them to use? Racket threads?" Apparently: yes. A definitive yes, in the case of Matthias, with a pointer to Robby Findler's paper on kill-safe abstractions; and still a yes from Matthew with the caveat that for the concrete level of concurrency that I described, you'd have to run tests. More fundamentally, I was advised to look at Concurrent ML (on which Racket's concurrency facilities were based), that CML was much better put together than many modern variants like Go.

This was very interesting and new to me. As y'all probably know, I don't have a formal background in programming languages, and although I've read a lot of literature, reading things only makes you aware of the growing dimension of the not-yet-read. Concurrent ML was even beyond my not-yet-read horizon.

So I went back and read a bunch of papers. Turns out Concurrent ML is like Lisp in that it has a tribe and a tightly-clutched history and a diaspora that reimplements it in whatever language they happen to be working in at the moment. Kinda cool, and, um... a bit hard to appreciate in the current-day context when the only good references are papers from 10 or 20 years ago.

However, after reading a bunch of John Reppy papers, here is my understanding of what Concurrent ML is. I welcome corrections; surely I am getting this wrong.

1. CML is like Go, composed of channels and goroutines. (Forgive the modern referent; I assume most folks know Go at this point.)

2. Unlike Go, in CML a channel is never buffered. To make a buffered channel in CML, you spawn a thread that manages a buffer between two channels.

3. Message send and receive operations in CML are built on a lower-level primitive called "events". (send ch x) is instead euivalent to (sync (send-event ch x)). It's like an event is the derivative of a message send with respect to time, or something.

4. Events can be combined and transformed using the choose and wrap combinators.

5. Doing a sync on an event created by choose allows a user to build select in "user-space", as a library. Cool stuff. So this is what events are for.

6. There are separate event type implementations for timeouts, channel send/recv blocking operations, file descriptor blocking operations, syscalls, thread joins, and the like. These are supported by the CML implementation.

7. The early implementations of Concurrent ML were concurrent but not parallel; they did not run multiple "goroutines" on separate CPU cores at the same time. It was only in like 2009 that people started to do CML in parallel. I do not know if this late parallelism has a practical impact on the viability of CML.

ok go

What is the relationship of CML to Go? Specifically, is CML more expressive than Go? (I assume the reverse is not the case, but that would also be an interesting result!)

There are a few languages that only allow you to select over message receives (not sends), but Go's select doesn't have this limitation, so that's not a differentiator.

Some people say that it's nice to have events as the common denominator, but I don't get this argument. If the only event under consideration is message send or receive over a channel, events + choose + sync is the same in expressive power as a built-in select, as far as I can see. If there are other events, then your runtime already has to support them either way, and something like (let ((ch (make-channel))) (spawn-fiber (lambda () (put-message ch exp))) (get-message ch)) should be sufficient for any runtime-supported event in exp, like sleeps or timeouts or thread joins or whatever.

To me it seems like Go has made the right choices here. I do not see the difference, and that's why I wrote all this, is to be shown the error of my ways. Choosing channels, send, receive, and select as the primitives seems to have the same power as SML events.

Let this post be a pentagram on the floor, then, to summon the CML cognoscenti. Well-actuallies are very welcome; hit me up in the comments!

[edit: Sam Tobin-Hochstadt tells me I got it wrong and I believe him :) In the meantime while I work out how I was wrong, examples are welcome!]

by Andy Wingo at September 20, 2016 09:33 PM

FSF Blogs

Free Software Directory meeting recap for September 16th, 2016

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 on the Friday, September 16th, 2016 meeting.

This week we had a special theme of focusing on accessibility packages. Free software is for everyone, but unless we make quality tools that everyone can use, many people will be left out. So making sure those packages are up to date and added to the Directory is really important. The meeting started off great with the discovery that one volunteer, Alejandroindependiente, had sat down the day before and updated just about every single package that was tagged as accessibility. Their awesome effort made it easy for us to go through and approve their changes during the meeting, and take steps on the last few that couldn't be updated. As a result, we were able to get an update or a bug filed for every single accessibility package in the Directory during the course of the meeting. It goes to show that even if you can't make it to the meetings on Friday, you can still have a huge impact on their success if you have time earlier in the week.

The channel also revisited discussions from our previous meetings regarding the user interface and categories available in the directory itself. While mattl discussed the accessibility features of MediaWiki (which the directory runs on), we also looked at more general issues regarding the interface of the directory.

The meeting concluded with the channel deciding that next week's theme should focus on education related packages. So next week's theme will be 'Back to School'.

If you would like to help update entries related to education or just help update the directory in general, meet with us every Friday in #fsf on irc.freenode.org from 12pm to 3pm EDT (16:00 to 19:00 UTC).

September 20, 2016 02:11 PM

September 19, 2016

chess @ Savannah

GNU Chess 6.2.3

I am glad to announce the release of version 6.2.3 of GNU Chess.

GNU Chess is a chess-playing program. It can be used to play chess
against the computer on a terminal or, more commonly, as a chess engine
for graphical chess frontends.

This is a minor bug-fix release.

We are very thankful to all contributions and all kind of feedback.

The home page can be found at the usual location:
http://www.gnu.org/software/chess/

You can get the compressed sources from a nearby mirror:
http://ftpmirror.gnu.org/chess/gnuchess-6.2.3.tar.gz

If automatic redirection fails, the list of mirrors is at:
http://www.gnu.org/order/ftp.html

Or if need be you can use the main GNU ftp server:
http://ftp.gnu.org/gnu/chess/gnuchess-6.2.3.tar.gz

The development source can be downloaded from the Subversion
repository at Savannah:
http://savannah.gnu.org/projects/chess

Bug reports, your kind contributions and any feedback are welcome.

Best regards,
Antonio Ceballos
GNU Chess Team

by Antonio Ceballos at September 19, 2016 10:52 PM

September 17, 2016

FSF News

Free Software Foundation statement on 2016-09-16

This morning, an open email circulated in which the author said that the Free Software Foundation ended a relationship with one of our employees for discriminatory reasons.

Although it is our usual policy not to comment publicly on internal personnel matters for privacy reasons, we felt it necessary to state unequivocally that the allegations made in that email are untrue.

It is part of our job to celebrate and improve the diversity of the free software world. We have strong anti-discrimination and anti-harassment policies to help provide a safe and supportive working environment. We uphold a safe space policy at all FSF events, and we provide scholarships to help people of different identities, and from different regions, attend. The FSF's mission is to defend the freedom of all computer users.

While we understand that it is difficult whenever an employment relationship ends, the suggestion that the separation was a result of discriminatory animus is unfounded. In the interest of protecting the privacy of all involved, we expect this to be our last public statement on the matter. We wish our former employee the best in all future endeavors.

September 17, 2016 03:05 AM

GNUCash News

September 16, 2016

FSF Blogs

Happy Software Freedom Day! A few words from RMS

It's a great day to celebrate software freedom -- and to educate your friends and colleagues about the importance of free software. Richard Stallman, founder of the Free Software Foundation (FSF), has created a brief, informative video about why software freedom is important to all. Check it out, and share the video by posting about it on your blog, or microblog about the video with the hashtag #SFD (be sure to avoid nonfree software when you do). Thanks to free software community members Devin Ulibarri and Daniel Fitzmartin for editing this video. Update: There are now subtitles provided by members of the community.

There are more than 100 events planned for Software Freedom Day across the globe. Check out the map to find an event near you -- and if you're attending an SFD event, suggest that they show the video. Even if there isn't an event in your area, you can get inspired by exploring the resources on the Software Freedom Day website, as well as on the FSF and GNU Project websites.

September 16, 2016 08:30 PM

autoconf-archive @ Savannah

Noteworthy changes in release 2016.09.16 [stable]

The following macros were added: AX_BUILD_DATE_EPOCH, AX_CHECK_X86_FEATURES, AX_GCC_X86_CPU_SUPPORTS, AX_OPEN62541_CHECK_H, AX_OPEN62541_CHECK_LIB, and AX_LUAROCKS_ROCK.

While updating AX_CODE_COVERAGE, the variable CODE_COVERAGE_LDFLAGS was renamed to CODE_COVERAGE_LIBS.

AX_VALGRIND_CHECK has been extended considerably. In this process. the undocumented internal rule check-valgrind-tool was removed.

It checks if the host cpu supports various instruction set: mmx, sse, popcnt, avx, avx2, etc. If the instruction were supported, it would export HAVE_XXX_INSTRUCTIONS C preprocessor macros and add the instruction set flag to X86_FEATURES_CFLAGS variable. By default it would also set CFLAGS, but this can be disabled by the ACTION-IF-FOUND hook.

AX_WITH_CURSES and AX_WITH_CURSES_* macros have been modernized, in line with PKG_CHECK_MODULES's style. This change breaks the interface, but makes AX_WITH_CURSES compatible and even completely replaceable with the interface of PKG_CHECK_MODULES. Ultimately, these macros should be replaced in the future by calls to PKG_CHECK_MODULES. Variables in AX_WITH_CURSES have been renamed

CURSES_LIB -> CURSES_LIBS CURSES_CPPFLAGS -> CURSES_CFLAGS

and for the AX_WITH_CURSES_* macros

PANEL_LIB -> PANEL_LIBS MENU_LIB -> MENU_LIBS FORM_LIB -> FORM_LIBS

such that once the variables have been renamed in configure.ac and Makefile.am, the calls AX_WITH_CURSES and PKG_CHECK_MODULES([CURSES], [ncurses]) are completely interchangeable.

by Peter Simons at September 16, 2016 10:12 AM

September 15, 2016

FSF Blogs

Friday Free Software Directory IRC meetup: September 16th

Join the FSF and friends Friday, September 16th, from 12pm to 3pm EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.

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

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 Free Software Directory has been and continues to be a great resource to the world over the past decade, it has the potential of being a resource of even greater value. But it needs your help!

This week we're having a special theme focusing on updating entries for accessibility software. Free software is for everyone, but unless we make quality tools that everyone can use, many people will be left out. If you have the knowledge and know how to discuss improving the accessibility of the directory itself, we'd also love to have you join us.

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 FSD Meetings pages that everyone is welcome to contribute to before, during, and after each meeting.

September 15, 2016 01:38 PM

denemo @ Savannah

Version 2.0.12 is out.

New Features
Assign current staff to an instrument
Create Ligatures
Add staff for instrument now sets time and key signatures
Improved menu layout
Custom Templates preserved on upgrade
Direct setting of Mute/Printing status of staffs at staff start

More GUI features
Highlighting objects as the cursor hovers over them
Staff tools in Display expanded
A Movement tools button installed
Tools in Display now sensitive when hovered over
Hidden Staffs indicator now clickable
Bug Fixes
Fix Print View update when changing initial clef/timesig
Fix Print View update when using score properties dialog
Fix WYSISYG beam angle alteration
Fix display update on attaching ornaments without cursor highlighting
Fix visibility of cursor on Denemo Directives
Various fixes to undo
Handle absence of LilyPond more gracefully
Edit staff by mouse interface improved
Known Bugs
Navigation from stale Print View with selection causes problems with Default Score Layout
InsertChord command gives bad display when used after clef change

by Richard Shann at September 15, 2016 09:12 AM

September 14, 2016

guile @ Savannah

GNU Guile 2.1.4 released (beta)

We are delighted to announce GNU Guile release 2.1.4, the next pre-release in what will become the 2.2 stable series.

This release fixes many small bugs, adds an atomic reference facility, and improves the effectiveness of integer unboxing in the compiler. See the release announcement for full details and a download link.

by Andy Wingo at September 14, 2016 10:10 AM

September 13, 2016

FSF Blogs

Free Software Directory recapping the "Golden Oldies" meeting

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 on the Friday, September 9th, 2016 meeting.

This week we had a special theme of "Golden Oldies" where we worked particularly on entries that hadn't received an update in quite a while. The meeting started off a bit slow with the channel just trying to get our new tool for discovering old entries looking nicely formatted and usable. Once challenge that had been discussed the previous week was the fact that users sometimes forgot to update the review dates of entries, but hopefully this issue will resolve itself as more older entries get reviewed.

kamel also jumped in with a new project for improving the directory: a tool for scanning entries to help predict tags/categories for the entry. This tool will be critical in making adding categories to the directory feasible. If we add categories, having a tool to find previous entries that can fit into that category will be extremely useful. In working on this project, kamel also found many pages that were not working, and has listed them on the directory for us to review what the issue is.

The channel also discussed the requirements for inclusion in the directory. While it can seem like a straightforward question of whether the package is freely licensed, there can be some interesting wrinkles. In particular, the channel discussed the inclusion of packages that are freely licensed, but then offer a 'premium' proprietary fork of the work. While selling exceptions to a freely licensed copyleft work can be acceptable, offering broken version of software under a free license as an advertisement for a fully featured proprietary version is a different story. A further complication to the issue arises when there is a community developed version that isn't associated with the proprietary developer. More work will need to be done to hash out all the details and write up proper guidance on dealing with this problem.

The meeting ended with the channel deciding that next week's theme should focus on packages related to accessibility. Free software is for everyone, but unless we make quality tools that everyone can use, many people will be left out. If you would like to help update entries related to accessibility or just help update the directory in general, meet with us every Friday in #fsf on irc.freenode.org from 12pm to 3pm EDT (16:00 to 19:00 UTC).

September 13, 2016 02:39 PM

FSF Events

Free Software Foundation community meetup (Washington, D.C.)

Come share snacks and refreshments with the free software community. FSF campaigns manager Zak Rogoff will be happy to talk about our ongoing battle against Digital Restrictions Management in Web standards, the recent European net neutrality victory, our role in the new White House source code policy, and almost anything else you ask him about. The FSF will provide the first round of snacks and beers, with more available from the menu.

This is an informal gathering for anyone interested in spending time with the free software community or learning more about the FSF; you are welcome, whether you are free software noob or hacker extraodinaire.

Location: Seoul Spice, 145 N St NE #400, Washington, D.C., 20002 – The closest subway station to Seoul Spice is NoMa-Gallaudet U on the Red Line. There is also a Capital Bikeshare station a block away, at First St. NE and M St. NE.

Seoul Spice is wheelchair accessible, and all people of ages are welcome.

RSVP: We'd love it if you'd let us know you're coming to the meetup, but you're also welcome to just drop in. Contact us at campaigns@fsf.org to RSVP, or if you have any questions.

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

September 13, 2016 11:00 AM

September 11, 2016

texinfo @ Savannah

Texinfo 6.3 released

We have released version 6.3 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):
http://ftpmirror.gnu.org/texinfo/texinfo-6.3.tar.xz
http://ftpmirror.gnu.org/texinfo/texinfo-6.3.tar.gz
Please send any comments to bug-texinfo@gnu.org.
Full announcement:
http://lists.gnu.org/archive/html/bug-texinfo/2016-09/msg00024.html

by Gavin D. Smith at September 11, 2016 12:01 PM