Planet GNU

Aggregation of development blogs from the GNU Project

October 18, 2016

FSF Blogs

Judge Mayer provides a strong case against software patents in Intellectual Ventures v. Symantec

The Free Software Foundation (FSF) has argued for years via its End Software Patents campaign that software patents are a threat to computer users everywhere and need to be abolished. In 2010, the FSF even funded a documentary, "Patent Absurdity: how software patents broke the system," laying out the history of this destructive force. More recently, FSF, the Open Source Initiative, and the Software Freedom Law Center filed an amicus curae in the United State's Supreme Court case of Alice Corp. v. CLS Bank Int’l (Alice). There, we explained the dangers of software patents and argued that "not only do software idea patents fail established tests for patentability; they also violate the First Amendment." It appears that someone on the Federal Circuit (the court that hears appeals on cases involving patents in the U.S.) took note.

That someone is Judge Haldane Robert Mayer, who in a stunning concurrence in Intellectual Ventures v. Symantec (links to a PDF) outlined the case against software patents. The argument will be familiar to those who have read the FSF's Amicus in Alice: software patents fail basic tests for patentability and violate the First Amendment. And while the fact that it is only a concurrence (and not the main opinion of the court) means that it is not settled law, it is a huge step forward in protecting computer users from the dangers of software patents.

Mayer lays out the First Amendment argument against patentability of certain subjects, noting that limits on the subject matter of patents are meant to protect free expression. Under U.S. law, 35 U.S.C § 101 (section 101) lays out the scope of patentable subject matter. In analysing this section, courts have carved out certain subjects as being outside the scope of patentability so as to protect freedom of expression. In particular, abstract ideas and mental process have been found too threatening to the free exchange of ideas to permit them to be locked up in patents. After outlining the basics, Mayer goes on to state that "Most of the First Amendment concerns associated with patent protection could be avoided if this court were willing to acknowledge that Alice sounded the death knell for software patents."

This is a really significant statement, offering clear guidance in the right direction as to how the Supreme Court case should be viewed.

Mayer notes that the Supreme Court in Alice "... explained that the 'mere recitation of a generic computer cannot transform a patent-ineligible abstract idea into a patent-eligible invention.' ... Accordingly, '[t]he fact that a computer necessarily exist[s] in the physical, rather than purely conceptual, realm is beside the point'..."

Mayer explains that "Software lies in the antechamber of patentable invention. Because generically-implemented software is an 'idea' insufficiently linked to any defining physical structure other than a standard computer, it is a precursor to technology rather than technology itself."

Mayer continues the line of thought to its practical conclusion: "Given that an 'idea' is not patentable ... and a generic computer is 'beside the point' in the eligibility analysis ... all software implemented on a standard computer should be deemed categorically outside the bounds of section 101."

Mayer even points out that the existence of free software itself is a strong argument against the granting of software patents. That the free software community has flourished for decades without the use of patents "suggests that innovation can flourish in software absent patent" restrictions.

This opinion is exactly the sort of thing we've been fighting for all these years. If only the rest of the court in Intellectual Ventures v. Symantec had joined in with Mayer in recognizing that software should never be subject to patents. While it is a great victory to see this analysis produced by a judge here in the U.S., there's obviously more that needs to be done before the 'death knell' truly sounds for software patents all around the world. Here's what you can do to help bring about that victory even faster:

October 18, 2016 06:08 PM

Free Software Directory meeting recap for October 14th, 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, October 14th, 2016 meeting.

This week we were the "Skeleton GNU", with a theme of looking to add substance to entries with only a few details. Unfortunately we were a bit of skeleton crew, with only a few participants. We discussed a bit how to improve turnout and decided to experiment next week with starting the meeting an hour later. Most participants in the past have been joining in the second hour or later of the meeting, so hopefully scheduling the meeting a little later will help overlap better with people's schedules.

The meeting started out working through GNU Project packages to make sure they were robustly detailed on the directory. In the end that turned out to be not a great starting point, as the GNU entries tended to be well documented already, which is a good problem to have.

In working to flesh out entries, we often found that packages with limited information were often quite old and dormant. For some of these the home for the project had disappeared, and new resources were difficult to track down. Iankelling proposed using some new method of tagging these dormant but still potentially useful packages. Even a package that isn't under active development can be useful in some particular cases, and even where a package hasn't been developed in some time, someone can obviously choose to pick it back up and make it live once again. The meeting ended with the decision that handling these 'Ghost' packages would be the theme of next week's meeting.

If you would like to help chase down ghost entries or just help update the directory in general, meet with us every Friday in #fsf on irc.freenode.org from 1pm to 4pm EDT (17:00 to 20:00 UTC).

October 18, 2016 04:11 PM

October 13, 2016

FSF Blogs

Friday 'Skeleton GNU' Directory IRC meetup: October 14th

Participate in supporting the FSD 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 FSD 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 the 'Skeleton GNU' looking to beef up bares bones entries with more information. While even the most skeletal entry can be useful, the best ones have robust description, links to documentation and other resources. We'll be looking for entries with minimal information, adding as much as we can and making sure they're up to date.

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.

October 13, 2016 07:19 PM

October 2016: photos from Libre Learn Lab, in Cambridge

RMS was in Cambridge, Massachusetts, last week, at the Libre Learn Lab (2016-10-08–09), a summit “for people who create and implement freely licensed resources for education, bringing together educators, policy experts, software developers, hardware hackers, and activists to share best practices and address the challenges of widespread adoption of these resources in education.” He was one of the keynote speakers and, on October 8th, gave his speech “Education for Freedom with Free (Libre) Software,”1 underscoring why exclusive use of free software is essential to educational institutions' role in teaching social responsibility and independence:

(Photos under CC BY-SA 4.0 and courtesy of Rubén Rodriguez.)

Please fill out our contact form, so that we can inform you about future events in and around Cambridge. Please see www.fsf.org/events for a full list of all of RMS's confirmed engagements, and contact [email protected] if you'd like him to come speak.

Thank you to Mariah Villarreal, Mark Barnett, and Walter Bender for having made this appearance possible!


1. A recording of RMS's speech will soon be available in our audio-video archive.

October 13, 2016 02:07 PM

October 12, 2016

FSF Blogs

Free Software Directory meeting recap for October 7th, 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, October 7th, 2016 meeting.

This week was the 'Meeting of the Undead' where we hunted down dead and broken links in the directory. Thanks to the efforts of Iankelling and adfeno, we have a script that runs to find dead external links on the directory and compile them into a list. One common problem we ran into was packages changing the location of their documentation without providing a redirect or updating their directory entry. So, if you are a maintainer out there who is itching to move documentation to a new location, keep in mind that you might be making your documentation harder to find.

We had lots of participants at this week's meeting cracking away at the hordes of undead, but as fmkb pointed out we couldn't get to everything and needed a good way to track entries where a new link couldn't be immediately found. We resolved to simply add notes at the top of the script generated list, but we'll have to revisit and work on a more nuanced solution in the future. Biotim, enrico, and jantwisted were some new faces to the meeting, and bill-auger returned to help mow down dead links.

We didn't end up deciding on a theme for this week during the meeting, but a suggestion afterwards came in that we work as the 'Skeleton GNU' and work on beefing up entries with limited information. While an entry can still be useful with only a short description and a few items of information, robust entries provide better documentation and make the directory an even better resource.

If you would like to help hunt and put meet on the bones of skeleton articles 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).

October 12, 2016 08:41 PM

Andy Wingo

An incomplete history of language facilities for concurrency

I have lately been in the market for better concurrency facilities in Guile. I want to be able to write network servers and peers that can gracefully, elegantly, and efficiently handle many tens of thousands of clients and other connections, but without blowing the complexity budget. It's a hard nut to crack.

Part of the problem is implementation, but a large part is just figuring out what to do. I have often thought that modern musicians must be crushed under the weight of recorded music history, but it turns out in our humble field that's also the case; there are as many concurrency designs as languages, just about. In this regard, what follows is an incomplete, nuanced, somewhat opinionated history of concurrency facilities in programming languages, with an eye towards what I should "buy" for the Fibers library I have been tinkering on for Guile.

* * *

Modern machines have the raw capability to serve hundreds of thousands of simultaneous long-lived connections, but it’s often hard to manage this at the software level. Fibers tries to solve this problem in a nice way. Before discussing the approach taken in Fibers, it’s worth spending some time on history to see how we got here.

One of the most dominant patterns for concurrency these days is “callbacks”, notably in the Twisted library for Python and the Node.js run-time for JavaScript. The basic observation in the callback approach to concurrency is that the efficient way to handle tens of thousands of connections at once is with low-level operating system facilities like poll or epoll. You add all of the file descriptors that you are interested in to a “poll set” and then ask the operating system which ones are readable or writable, as appropriate. Once the operating system says “yes, file descriptor 7145 is readable”, you can do something with that socket; but what? With callbacks, the answer is “call a user-supplied closure”: a callback, representing the continuation of the computation on that socket.

Building a network service with a callback-oriented concurrency system means breaking the program into little chunks that can run without blocking. Whereever a program could block, instead of just continuing the program, you register a callback. Unfortunately this requirement permeates the program, from top to bottom: you always pay the mental cost of inverting your program’s control flow by turning it into callbacks, and you always incur run-time cost of closure creation, even when the particular I/O could proceed without blocking. It’s a somewhat galling requirement, given that this contortion is required of the programmer, but could be done by the compiler. We Schemers demand better abstractions than manual, obligatory continuation-passing-style conversion.

Callback-based systems also encourage unstructured concurrency, as in practice callbacks are not the only path for data and control flow in a system: usually there is mutable global state as well. Without strong patterns and conventions, callback-based systems often exhibit bugs caused by concurrent reads and writes to global state.

Some of the problems of callbacks can be mitigated by using “promises” or other library-level abstractions; if you’re a Haskell person, you can think of this as lifting all possibly-blocking operations into a monad. If you’re not a Haskeller, that’s cool, neither am I! But if your typey spidey senses are tingling, it’s for good reason: with promises, your whole program has to be transformed to return promises-for-values instead of values anywhere it would block.

An obvious solution to the control-flow problem of callbacks is to use threads. In the most generic sense, a thread is a language feature which denotes an independent computation. Threads are created by other threads, but fork off and run independently instead of returning to their caller. In a system with threads, there is implicitly a scheduler somewhere that multiplexes the threads so that when one suspends, another can run.

In practice, the concept of threads is often conflated with a particular implementation, kernel threads. Kernel threads are very low-level abstractions that are provided by the operating system. The nice thing about kernel threads is that they can use any CPU that is the kernel knows about. That’s an important factor in today’s computing landscape, where Moore’s law seems to be giving us more cores instead of more gigahertz.

However, as a building block for a highly concurrent system, kernel threads have a few important problems.

One is that kernel threads simply aren’t designed to be allocated in huge numbers, and instead are more optimized to run in a one-per-CPU-core fashion. Their memory usage is relatively high for what should be a lightweight abstraction: some 10 kilobytes at least and often some megabytes, in the form of the thread’s stack. There are ongoing efforts to reduce this for some systems but we cannot expect wide deployment in the next 5 years, if ever. Even in the best case, a hundred thousand kernel threads will take at least a gigabyte of memory, which seems a bit excessive for book-keeping overhead.

Kernel threads can be a bit irritating to schedule, too: when one thread suspends, it’s for a reason, and it can be that user-space knows a good next thread that should run. However because kernel threads are scheduled in the kernel, it’s rarely possible for the kernel to make informed decisions. There are some “user-mode scheduling” facilities that are in development for some systems, but again only for some systems.

The other significant problem is that building non-crashy systems on top of kernel threads is hard to do, not to mention “correct” systems. It’s an embarrassing situation. For one thing, the low-level synchronization primitives that are typically provided with kernel threads, mutexes and condition variables, are not composable. Also, as with callback-oriented concurrency, one thread can silently corrupt another via unstructured mutation of shared state. It’s worse with kernel threads, though: a kernel thread can be interrupted at any point, not just at I/O. And though callback-oriented systems can theoretically operate on multiple CPUs at once, in practice they don’t. This restriction is sometimes touted as a benefit by proponents of callback-oriented systems, because in such a system, the callback invocations have a single, sequential order. With multiple CPUs, this is not the case, as multiple threads can run at the same time, in parallel.

Kernel threads can work. The Java virtual machine does at least manage to prevent low-level memory corruption and to do so with high performance, but still, even Java-based systems that aim for maximum concurrency avoid using a thread per connection because threads use too much memory.

In this context it’s no wonder that there’s a third strain of concurrency: shared-nothing message-passing systems like Erlang. Erlang isolates each thread (called processes in the Erlang world), giving each it its own heap and “mailbox”. Processes can spawn other processes, and the concurrency primitive is message-passing. A process that tries receive a message from an empty mailbox will “block”, from its perspective. In the meantime the system will run other processes. Message sends never block, oddly; instead, sending to a process with many messages pending makes it more likely that Erlang will pre-empt the sending process. It’s a strange tradeoff, but it makes sense when you realize that Erlang was designed for network transparency: the same message send/receive interface can be used to send messages to processes on remote machines as well.

No network is truly transparent, however. At the most basic level, the performance of network sends should be much slower than local sends. Whereas a message sent to a remote process has to be written out byte-by-byte over the network, there is no need to copy immutable data within the same address space. The complexity of a remote message send is O(n) in the size of the message, whereas a local immutable send is O(1). This suggests that hiding the different complexities behind one operator is the wrong thing to do. And indeed, given byte read and write operators over sockets, it’s possible to implement remote message send and receive as a process that serializes and parses messages between a channel and a byte sink or source. In this way we get cheap local channels, and network shims are under the programmer’s control. This is the approach that the Go language takes, and is the one we use in Fibers.

Structuring a concurrent program as separate threads that communicate over channels is an old idea that goes back to Tony Hoare’s work on “Communicating Sequential Processes” (CSP). CSP is an elegant tower of mathematical abstraction whose layers form a pattern language for building concurrent systems that you can still reason about. Interestingly, it does so without any concept of time at all, instead representing a thread’s behavior as a trace of instantaneous events. Threads themselves are like functions that unfold over the possible events to produce the actual event trace seen at run-time.

This view of events as instantaneous happenings extends to communication as well. In CSP, one communication between two threads is modelled as an instantaneous event, partitioning the traces of the two threads into “before” and “after” segments.

Practically speaking, this has ramifications in the Go language, which was heavily inspired by CSP. You might think that a channel is just a an asynchronous queue that blocks when writing to a full queue, or when reading from an empty queue. That’s a bit closer to the Erlang conception of how things should work, though as we mentioned, Erlang simply slows down writes to full mailboxes rather than blocking them entirely. However, that’s not what Go and other systems in the CSP family do; sending a message on a channel will block until there is a receiver available, and vice versa. The threads are said to “rendezvous” at the event.

Unbuffered channels have the interesting property that you can select between sending a message on channel a or channel b, and in the end only one message will be sent; nothing happens until there is a receiver ready to take the message. In this way messages are really owned by threads and never by the channels themselves. You can of course add buffering if you like, simply by making a thread that waits on either sends or receives on a channel, and which buffers sends and makes them available to receives. It’s also possible to add explicit support for buffered channels, as Go, core.async, and many other systems do, which can reduce the number of context switches as there is no explicit buffer thread.

Whether to buffer or not to buffer is a tricky choice. It’s possible to implement singly-buffered channels in a system like Erlang via an explicit send/acknowlege protocol, though it seems difficult to implement completely unbuffered channels. As we mentioned, it’s possible to add buffering to an unbuffered system by the introduction of explicit buffer threads. In the end though in Fibers we follow CSP’s lead so that we can implement the nice select behavior that we mentioned above.

As a final point, select is OK but is not a great language abstraction. Say you call a function and it returns some kind of asynchronous result which you then have to select on. It could return this result as a channel, and that would be fine: you can add that channel to the other channels in your select set and you are good. However, what if what the function does is receive a message on a channel, then do something with the message? In that case the function should return a channel, plus a continuation (as a closure or something). If select results in a message being received over that channel, then we call the continuation on the message. Fine. But, what if the function itself wanted to select over some channels? It could return multiple channels and continuations, but that becomes unwieldy.

What we need is an abstraction over asynchronous operations, and that is the main idea of a CSP-derived system called “Concurrent ML” (CML). Originally implemented as a library on top of Standard ML of New Jersey by John Reppy, CML provides this abstraction, which in Fibers is called an operation1. Calling send-operation on a channel returns an operation, which is just a value. Operations are like closures in a way; a closure wraps up code in its environment, which can be later called many times or not at all. Operations likewise can be performed2 many times or not at all; performing an operation is like calling a function. The interesting part is that you can compose operations via the wrap-operation and choice-operation combinators. The former lets you bundle up an operation and a continuation. The latter lets you construct an operation that chooses over a number of operations. Calling perform-operation on a choice operation will perform one and only one of the choices. Performing an operation will call its wrap-operation continuation on the resulting values.

While it’s possible to implement Concurrent ML in terms of Go’s channels and baked-in select statement, it’s more expressive to do it the other way around, as that also lets us implement other operations types besides channel send and receive, for example timeouts and condition variables.


1 CML uses the term event, but I find this to be a confusing name. In this isolated article my terminology probably looks confusing, but in the context of the library I think it can be OK. The jury is out though.

2 In CML, synchronized.

* * *

Well, that's my limited understanding of the crushing weight of history. Note that part of this article is now in the Fibers manual.

Thanks very much to Matthew Flatt, Matthias Felleisen, and Michael Sperber for pushing me towards CML. In the beginning I thought its benefits were small and complication large, but now I see it as being the reverse. Happy hacking :)

by Andy Wingo at October 12, 2016 01:45 PM

guile @ Savannah

GNU Guile 2.0.13 released [security fixes]

We've just released a new version of GNU Guile, version 2.0.13, which is a security release for Guile (see the original announcement).

This handles a significant security vulnerability affecting the live REPL, CVE-2016-8606. Due to the nature of this bug, Guile applications themselves in general aren't vulnerable, but Guile developers are. Arbitrary Scheme code may be used to attack your system in this scenario. (A more minor security issue is also addressed, CVE-2016-8605.)

There is also a lesson here that applies beyond Guile: the presumption that "localhost" is only accessible by local users can't be guaranteed by modern operating system environments. If you are looking to provide local-execution-only, we recommend using Unix domain sockets or named pipes. Don't rely on localhost plus some port.

To give context, Guile supports a nice live-hacking feature where a user can expose a REPL to connect to, through Geiser or so on. This allows Guile users to hack programs even while programs are running.

When using the live hacking feature, the default in Guile has been to expose a port over localhost to which code may be passed. The assumption for this is that only a local user may write to localhost, so it should be safe. Unfortunately, users simultaneously developing Guile and operating modern browsers are vulnerable to a combination of an HTML form protocol attack and a DNS rebinding attack. How to combine these attacks is published in the article How to steal any developer's local database.

In Guile's case, the general idea is that you visit some site which presumably loads some JavaScript code (or tricks the developer into pressing a button which performs a POST), and the site operator switches the DNS from their own IP to 127.0.0.1. Then a POST is done from the website to 127.0.0.1 with the body containing Scheme code. This code is then executed by the Guile interpreter on the listening port.

The version we are releasing mitigates this problem by detecting incoming HTTP connections and closing them before executing any code.

However, there is a better long term solution, which is already available even to users of older versions of Guile: Guile supports Unix domain sockets in POSIX environments. For example, users may run the command:

to open and listen to a socket at /tmp/guile-socket. Geiser users may then connect using M-x geiser-connect-local. This is considerably safer.

We hope that other program authors take heed of this lesson as well: many programs make use of localhost + port as a way of limiting connections. Unfortunately, in today's complex networked environment, this isn't a safe assumption. It's very difficult to predict what programs may provide a way of chaining requests to an application listening on localhost, and certainly difficult on a system where web browsers are involved. Take heed!

(This post originally appeared on the guile-users mailing list.)

by Christopher Allan Webber at October 12, 2016 12:56 PM

October 11, 2016

FSF News

The Free Software Foundation seeks nominations for the 19th annual Free Software Awards

Award for the Advancement of Free Software

This award is presented annually by FSF president Richard Stallman to an individual who has made a great contribution to the progress and development of free software, through activities that accord with the spirit of free software.

Individuals who describe their projects as "open" instead of "free" are eligible nonetheless, provided the software is in fact free/libre.

Last year, Werner Koch was recognized with the Award for the Advancement of Free Software for his work on GnuPG, the de facto tool for encrypted communication. Koch joined a prestigious list of previous winners including Sébastien Jodogne, Matthew Garrett, Dr. Fernando Perez, Yukihiro Matsumoto, Rob Savoye, John Gilmore, Wietse Venema, Harald Welte, Ted Ts'o, Andrew Tridgell, Theo de Raadt, Alan Cox, Larry Lessig, Guido van Rossum, Brian Paul, Miguel de Icaza, and Larry Wall.

Award for Projects of Social Benefit

Nominations are also sought for the 2016 Award for Projects of Social Benefit.

This award is presented to the project or team responsible for applying free software, or the ideas of the free software movement, in a project that intentionally and significantly benefits society in other aspects of life.

The award recognizes projects or teams that encourage people to cooperate in freedom to accomplish tasks of great social benefit, and those that apply free software ideas and lessons outside the free software community. A long-term commitment to one's project (or the potential for a long-term commitment) is crucial to this end.

This award stresses the use of free software in the service of humanity. The FSF has deliberately chosen this broad criterion so that many different areas of activity can be considered. However, one area that is not included is that of free software itself. Projects with a primary goal of promoting or advancing free software are not eligible for this award (the FSF honors individuals working on those projects with its annual Award for the Advancement of Free Software).

The award committee will consider any project or team that uses free software or its philosophy to address a goal important to society. To qualify, a project must use free software, produce free documentation, or use the idea of free software as defined in the Free Software Definition. Projects that promote or depend on the use of non-free software are not eligible. Commercial projects are not excluded, but commercial success is not the metric for judging projects.

Last year, the Library Freedom Project received the award. A partnership among librarians, technologists, attorneys, and privacy advocates which aims to make real the promise of intellectual freedom in libraries, the Library Freedom Project teaches librarians about surveillance threats, privacy rights and responsibilities, and offers digital tools to stop surveillance, all with the aim of creating a privacy-centric paradigm shift in libraries and the local communities they serve. Notably, the project helps libraries launch Tor exit nodes.

Other previous winners have included Reglue, the GNOME Outreach Program for Women (now Outreachy), OpenMRS, GNU Health, Tor, the Internet Archive, Creative Commons, Groklaw, the Sahana project, and Wikipedia.

Eligibility

In the case of both awards, previous winners are not eligible for nomination, but renomination of other previous nominees is encouraged. Only individuals are eligible for nomination for the Advancement of Free Software Award (not projects), and only projects can be nominated for the Social Benefit Award (not individuals). For a list of previous winners, please visit https://www.fsf.org/awards.

Current FSF staff and board members, as well as award committee members, are not eligible.

Winners will be decided by a committee to be announced, including several previous winners. Last year's committee was:

  • Suresh Ramasubramanian
  • Rob Savoye
  • Jonas Öberg
  • Fernanda Weiden
  • Wietse Venema
  • Matthew Garrett
  • Vernor Vinge
  • Hong Feng
  • Andrew Tridgell
  • Marina Zhurakhinskaya
  • Richard Stallman

Instructions

After reviewing the eligibility rules above, please click on the links below to submit your nominations. All nominations need to be submited before Sunday, November 6th, 2016 at 23:59 UTC.

Information about the previous awards can be found at https://www.fsf.org/awards. Winners will be announced at an awards ceremony at the LibrePlanet conference, March 25-26 2016, in the Boston area.

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 [email protected]

October 11, 2016 06:30 PM

FSF Events

John Sullivan - "Freedom Embedded: Devices That Respect Users and Communities" (Raleigh, NC)

John Sullivan will be speaking at All Things Open (2016-10-26–27). His speech will be nontechnical and the public is encouraged to attend.

GNU and Linux are now embedded in more kinds of hardware than ever, but nearly always only by requiring proprietary bits. The world’s most popular tablets and phones are based on a free core system loaded with nonfree software on top. How do we get the freedom we all want, and what is the market for that? The Free Software Foundation has a certification program called “Respects Your Freedom” (RYF) that awards a certification mark to hardware meeting a set of free software standards (fsf.org/ryf). Embedded and IoT devices are a major target for the future of this program.
RYF has already made significant gains, especially over the last few years, certifying USB wifi adapters, 3D printers, home wifi routers, and earlier generation laptops. Even bigger things are planned, and most involve the embedded world. Get updates on what’s in store, learn what it takes to get your product certified, hear about the impact of certification so far and the community that has formed around the program, and discuss possible improvements to the standards.

Location: Raleigh Convention Center, Raleigh, NC

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

October 11, 2016 11:35 AM

October 10, 2016

FSF Events

Richard Stallman to speak in Alcala de Henares, Spain

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

El título y la hora de la charla serán determinados.

Lugar: por determinar

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

October 10, 2016 04:45 PM

October 07, 2016

FSF Events

Richard Stallman to speak at GNU Health Con 2016 (Las Palmas, Spain)

Richard Stallman will be speaking at I International GNU Health Conference (2016-11-18–20). His speech will be nontechnical and the public is encouraged to attend.

Speech topic and start time to be determined.

Location: to be determined

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

October 07, 2016 03:25 PM

Richard Stallman - "El Software Libre y Tu Libertad" (Barcelona, Spain)

Richard Stallman hablará sobre las metas y la filosofía del movimiento del Software Libre, y el estado y la historia del sistema operativo GNU, el cual junto con el núcleo Linux, es actualmente utilizado por decenas de millones de personas en todo el mundo.

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

Lugar: Sala de actos Instituto Ausiàs Mach, Avenida de Esplugues, 38 08034 (metro linea 3, Parada Zona Universitaria), Barcelona, Spain

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

El registro para esta charla se puede hacer de modo anónimo. (No es obligatorio, pero se agradecerá para facilitar la organización del evento.)

October 07, 2016 02:45 PM

Richard Stallman - "El software libre en la ética y en la práctica" (Salamanca, Spain)

Richard Stallman hablará sobre las metas y la filosofía del movimiento del Software Libre, y el estado y la historia del sistema operativo GNU, el cual junto con el núcleo Linux, es actualmente utilizado por decenas de millones de personas en todo el mundo.

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

Lugar: Salón de Actos de la Facultad de Ciencias, Universidad de Salamanca Plaza de los Caídos, S/N, 37008 Salamanca, España

El registro para esta charla se puede hacer de modo anónimo. (No es obligatorio, pero se agradecerá para facilitar la organización del evento.)

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

October 07, 2016 02:35 PM

GNUnet News

Reverse lookups in GNS

Motivation
DNS allows to resolve the name of an IP address. This is sometimes called "reverse lookup". In fact, it is actually "normal" resolution of a PTR record. The name of such a record would be, for example, 4.4.8.8.in-addr.arpa. The .arpa TLD is managed by IANA.

This blogpost is meant to spread ideas that have been exchanged via private email and might be interesting for a broader audience. If you feel like you have useful comments, don't hesitate to do so.

by Martin Schanzenbach at October 07, 2016 09:16 AM

October 06, 2016

FSF Blogs

Register now for LibrePlanet 2017: "The Roots of Freedom" March 25-26, 2017 in Boston, MA

LibrePlanet 2017
March 25-26
Greater Boston

Gratis for students and FSF associate members

Register now

Clear your calendars for the last weekend of March 2017! Registration for LibrePlanet is now open. The conference will be held March 25-26, 2017, in the Boston area.

Last year, over 350 people participated in LibrePlanet, traveling from 11 countries and 28 U.S. states. And guess what? Students and FSF members attend LibrePlanet gratis. Not a member? Join today to register gratis, or register at our non-member rate.

This year's theme is "The Roots of Freedom." Some talks at this year's conference will look back at the historical "roots" of the free software movement, including the Four Freedoms, the GNU General Public License and copyleft, and the focus on strong security and privacy protections. Others will look at the movement's strong, foundational "roots" -- and the exciting developments that grow from them in education, business, activism, and the arts.

Want to speak at LibrePlanet?

You have just a few weeks left to submit a session proposal -- the deadline is November 14th, 2016 at 18:59 EST (23:59 UTC).

Do you have questions about what makes a strong proposal? We're hosting an information session to answer any questions you have about submitting a proposal for LibrePlanet on Tuesday, November 1st from 15:00 - 18:00 EDT (19:00 - 22:00 UTC). Join us in the #libreplanet IRC channel on irc.freenode.net. Don't use IRC? Email your questions to [email protected].

Need help traveling to LibrePlanet?

We have a limited amount of funding to bring conference participants to LibrePlanet from all around the world. You can apply for a scholarship starting now -- the application deadline is Monday, December 1st, 2016 at 10:00 EST in the morning (15:00 UTC). Scholarship recipients will be notified in mid-December.

If you don't need a scholarship, you can help us welcome all types of people to LibrePlanet 2016 by making a contribution to the conference's scholarship fund now, or when you register for LibrePlanet.

Will your company sponsor LibrePlanet?

Would your employer consider sponsoring LibrePlanet? We'll be providing the info you need to persuade them soon, but you can also contact us now at [email protected] for more information.

LibrePlanet is an energizing, friendly event where you'll meet activists, students, developers, and leaders -- and you may get involved in a new project, gain new energy for free software activism, and make new friends. We work hard to ensure a welcoming environment for all, and we have a safe space policy. Don't wait to register: we want you here with us on March 25-26, 2017 for LibrePlanet 2017.

Check out LibrePlanet 2016's video of testimonials about why the free software community loves this annual event!

October 06, 2016 07:03 PM

Christopher Allan Webber

An even more distributed ActivityPub

So ActivityPub is nearing Candidate Recommendation status. If you want to hear a lot more about that whole process of getting there, and my recent trip to TPAC, and more, I wrote a post on the MediaGoblin blog about it.

Last night my brother Stephen came over and he was talking about how he wished ActivityPub was more of a "transactional" system. I've been thinking about this myself. ActivityPub as it is designed is made for the social network of 2014 more or less: trying to reproduce what the silos do, which is mutate a big database for specific objects, but reproduce that in a distributed way. Well, mutating distributed systems is a bit risky. Can we do better, without throwing out the majority of the system? I think it's possible, with a couple of tweaks.

  • The summary is to move to objects and pointers to objects. There's no mutation, only "changing" pointers (and even this is done via appending to a log, mostly).

    If you're familiar with git, you could think of the objects as well, objects, and the pointers as branches.

    Except... the log isn't in the objects pointing at their previous revisions really, the logging is on the pointers:

    [pointer id] => [note content id]
    
  • There's (activitystreams) objects (which may be content addressed, to be more robust), and then "pointers" to those, via signed pointer-logs.

  • The only mutation in the system is that the "pointers", which are signed logs (substitute "logs" for "ledger" and I guess that makes it a "blockchain" loosely), are append-only structures that say where the new content is. If something changes a lot, it can have "checkpoints". So, you can ignore old stuff eventually.

  • Updating content means making a new object, and updating the pointer-log to point to it.

  • This of course leads to a problem: what identifier should objects use to point at each other? The "content" id, or the "pointer-log" id? One route is that when one object links to another object, it could link to both the pointer-log id and the object id, but that hardly seems desirable...

  • Maybe the best route is to have all content ids point back at their official log id... this isn't as crazy as it sounds! Have a three step process for creating a brand new object:

    • Open a new pointer-log, which is empty, and get the identifier
    • Create the new object with all its content, and also add a link back to the pointer-log in the content's body
    • Add the new object as the first item in the pointer-log
  • At this point, I think we can get rid of all side effects in ActivityPub! The only mutation thing is append-only to that pointer-log. As for everything else:

    • Create just means "This is the first time you've seen this object." And in fact, we could probably drop Create in a system like this, because we don't need it.
    • Update is really just informing that there's a new entry on the pointer-log.
    • Delete... well, you can delete your own copy. You're mostly informing other servers to delete their copy, but they have a choice if they really will... though that's always been true! You now can also switch to the nice property that removing old content is now really garbage collection :)
  • Addressing and distribution still happens in the same, previous ways it did, I assume? So, you still won't get access to an object unless you have permissions? Though that gets more confusing if you use the (optional) content addressed storage here.

  • You now get a whole lot of things for free:

    • You have a built in history log of everything
    • Even if someone else's node goes down, you can keep a copy of all their content, and keep around the signatures to show that yeah, that really was the content they put there!
    • You could theoretically distribute storage pretty nicely
    • Updates/deletes are less dangerous

(Thanks to Steve for encouraging me to think this through more clearly, and lending your own thoughts, a lot of which is represented here! Thanks also to Manu Sporny who was the first to get me thinking along these lines with some comments at TPAC. Though, any mistakes in the design are mine...)

Of course, you can hit even more distributed-system-nerd points by tossing in the possibility of encrypting everything in the system, but let's leave that as an exercise for the reader. (It's not too much extra work if you already have public keys on profiles.)

Anyway, is this likely to happen? Well, time is running out in the group, so I'm unlikely to push for it in this iteration. But the good news, as I said, is that I think it can be built on top without too much extra work... The systems might even be straight-up compatible, and eventually the old mutation-heavy-system could be considered the "crufty" way of doing things.

Architectural astronaut'ing? Maybe! Fun to think about! Hopefully fun to explore. Gotta get the 2014-made-distributed version of the social web out first though. :)

by Christopher Allan Webber at October 06, 2016 09:43 AM

October 05, 2016

GNU MediaGoblin

ActivityPub and MediaGoblin at TPAC 2016 (or: ActivityPub needs your review!)

Screenshot of ActivityPub Working Draft

Hello everyone! We have a lot of news to cover, but I’m going to jump right into the thick of it: we’ve been working hard on a new federation (as well as client to server) standard called ActivityPub (formerly ActivityPump). We’ve made tremendous progress, and I was just recently at a face to face meeting at TPAC, the W3C’s big technical conference.

The good news: ActivityPub is aiming to hit Candidate Recommendation status by October 11th. (That’s less than a week away!) However, in order to enter that stage, we need your review! If you have any interest in the decentralized web, you can help. All you have to do is read the latest editor’s draft and provide feedback. (The earlier the better… maybe a fun weekend project?) You can do this by any of the following:

  • Post issues on the issue tracker (yes, I think it’s ironic and problematic that we’re using GitHub, I picked my battles here, whether right or wrong).
  • Email the social working group comments mailing list.
  • You can email me directly. Email cwebber AT dustycloud DOT org, and include “ActivityPub” in the subject. Note that I will be publishing your comments publicly, probably on the Social Working Group wiki!

If you have feedback, we want to hear it! (From anyone, but especially from those who are interested in implementing ActivityPub!) Thank you!

ActivityPub live

Note, the rest of this post is a bit of a dive into behind the scenes decisions and activity in MediaGoblin and ActivityPub… there’s no need to read this part to submit a review!

I’m kind of traveling through time in all the wrong order in this post… but it’s worth jumping forward a bit to see the results of what we’ve done. Over the last many months there’s been a huge push on ActivityPub as a standard, as we’ll talk about. But in order to succeed, I also needed implementations, both of client to server and server to server. Well, I’m happy to say that those did come together…

Pubstrate in action!

This is Pubstrate, an implementation of ActivityStreams and ActivityPub for GNU Guile. Sorry for the sappy embedded love-note, though what’s nice about this is that it’s the first demo I gave to someone else of the client to server functionality working in Pubstrate. But wait, what was the client?

Soci-El in action!

This is soci-el, an ActivityPub client written in… you guessed it… emacs lisp. You can see the rendering of the user’s outbox here as well as the buffers from which the message was composed.

Pretty nerdy! I don’t expect everyone to be using emacs as an ActivityPub client of course… I hope to see various desktop, web, and mobile clients made available. But, Emacs is the most fun for me, and I was time pressed, so there we are.

Everyone loves seeing screenshots, but maybe not all of this stuff makes sense without context. What does this mean for MediaGoblin?

So what’s been going on?

It seems a recurring meme in MediaGoblin land to say “we’ve been quiet, because we’ve been busy” (or maybe historically on every tech blog ever), but I guess I can’t resist repeating the mantra. It’s true! Though the weight of my focus has been shifted from where I expected it to be. From the last few updates over the last year, you would be right to anticipate that the main thing I would be working on would be merging the federation code Jessica has written and getting 1.0 out the door. That was the plan, and we’re still working towards that, but priorities shifted as we realized the opportunities and time pressures we were under with ActivityPub. After the Social Working Group face to face meeting in June, Jessica and I sat down and talked about what we should do. Jessica had recently started working at Igalia (great people!) and was busy with that and other transitions in her life, so we discussed whether we thought it was most sensible to focus my energy on MediaGoblin or on ActivityPub. It was clear that ActivityPub was shaping into a solid specification, but it was also made clear that the Social Working Group’s charter was running out by the end of 2016. We both think ActivityPub is key to MediaGoblin’s success and didn’t want to see our invested time go to waste, so decided my immediate focus should switch to ActivityPub so it could successfully make it as a standard.

Which isn’t doom and gloom for MediaGoblin! MediaGoblin development has continued… the community is good enough that people have been able to work while I’ve been busy. I’m happy to say we also appointed longtime contributor Boris Bobrov as co-maintainer to help reduce me being a bottleneck. (Thank you Boris, and congrats!) Other contributors have also stepped up to the plate. I’m especially thankful of Ben Sturmfels for hosting MediaGoblin hackathons and being so responsive to community members. (And of course, there are many others to thank, too!)

Anyway, I’m not going anywhere, I’ve just been shifting focus to standards work for a bit… but it’s all for the greater good of MediaGoblin. (Well, and the greater federated social web!) Soon, we’ll be putting the work we’re doing on ActivityPub directly into MediaGoblin. When we merge Jessica’s work on federation, we will also retool it so that the first federated release of MediaGoblin will be blazing the trails with ActivityPub.

Both ActivityPub and I personally got a significant boost by a happy visit from friend and Social Working Group co-conspirator Amy Guy. Amy dropped by for an intense four days of standards hacking and scheming, and came up with several significant ways to restructure and improve the document. With her help, we now have much clearer distinction between the use of ActivityPub as a client to server protocol (think mobile applications and desktop applications connecting to your server) vs the server to server protocol (federation). Both of these are now clearly intertwined in the document, but are distinct enough where they can be used and understood separately if desired. We also more clearly established the connections between ActivityPub and the linked data community by explaining ActivityPub’s relationship with Linked Data Notifications.

Amy has a gift for composing standards language, something I’m still struggling to learn (but hopefully getting better with over time). ActivityPub is much better with her hard work. Thank you Amy!

In addition to the standards side of things, in order to get ActivityPub to the next level, we needed to be able to present real live demonstrations of the standard in action. Hence the work on Pubstrate and soci-el mentioned previously. For most of the months before TPAC, I was working furiously day and night to get things ready to show… And then, it was time to head off, and hope it was good enough…

TPAC

Live demo image, by aaronpk
TPAC demo room photo by Aaron Parecki

Fortunately, all that hard work paid off. The Social Working Group kicked off TPAC with live open-viewing demonstrations of the various standards we’ve been working on. We got in a really solid set of demos from everyone in the group.

From my end, I managed to demo all the core parts of the ActivityPub spec: I wrote a note in my client (soci-el), fired it off to the server (Pubstrate), where it rendered successfully. Then I explained, well, what if you want someone on another machine to see it? So I had another user on a separate Pubstrate instance, added the user over there to the recipients list on my message, shot the message over to the server, crossed my fingers and hey! The live demo of federation succeeded. (Whew!)

In the actual main Social Working Group meeting, we hammered things forward pretty nicely. As said, ActivityPub was positioned to move ahead towards Candidate Recommendation by the 11th. Again, your feedback is most valuable at this time!

Spying image from the campaign video

Oh, one more thing. On the second day of the main Social Working Group meetings, at Amy’s suggestion (apparently she was impressed when I showed her at her visit), I showed off the MediaGoblin campaign video to the group. Apparently I had never done so previously, so it was really nice to hear the reaction: “Holy cow, this is describing exactly the type of stuff we’re working on in the working group!” Yep, exactly… all that stuff you see illustrated in that video, we’re working on putting into code and standards. The dream lives!

So, all this Social Working Group stuff… things are happening! We’re not just goofing off!

TPAC 2016-09-23 goofoff gif by aaronpk
Super serious TPAC group “photo” by Aaron Parecki

… er, right. Not just goofing off! :)

by Christopher Allan Webber at October 05, 2016 04:45 PM

October 04, 2016

FSF Blogs

Free Software Directory meeting recap for September 30th, 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 30th, 2016 meeting.

This week we had a special theme of focusing on collaboration related software. This was another big category, but we made some great progress in updating tools for helping people work together. The channel also did some great collaboration in improving the tools we use to work on the directory. adfeno and dachary worked together on the participation guide tools section, improving guides for scripting work in the directory. They made a section in the guide for using pywikibot, a command line, to simplify tasks in the directory.

Iankelling and donaldr3 each started from opposite ends of the project management category and got close to meeting in the middle on updating the pages. jgay helped approve a massive batch of updates to the directory, and mattl was also there to help update entries and provide insight on some of the scripting tasks. The meeting ended up running long after its scheduled end time as everyone wanted to keep working on their projects.

adfeno and Iankelling worked long after the end of even the long-running meeting to put together a resource on broken links in the directory. Using pywikibot they were able to generate a listing of dead external links on the directory. Which means that our first meeting in October will be the 'Meeting of the Undead' where we focus on finding and bring back to life dead links.

If you would like to help hunt for the dead links 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).

October 04, 2016 03:53 PM

Twenty-two new GNU releases in September

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

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

This month, we welcome Boris Bobrov as the new GNU MediaGoblin co-maintainer.

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

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

As always, please feel free to write to us at [email protected] with any GNUish questions or suggestions for future installments.

October 04, 2016 02:00 PM

October 03, 2016

gnuastro @ Savannah

Gnuastro 0.2 released

I am pleased to announce the second release of GNU Astronomy Utilities (Gnuastro).

Gnuastro is a collection of programs and library functions for astronomical data manipulation and analysis. The programs are run directory on the command-line, enabling easy and efficient operationS (combined with other installed programs) in shell scripts or Makefiles. The libraries are also usable in C and C++ programs.

The main changes in this version can be seen in the NEWS file which is also distributed with this announcement in footnote 1 (below). The most notable new features are:

  • Gnuastro library: to use the building blocks of Gnuastro's programs in other C and C++ programs. Python wrappers will also be coming with the next releases. In this release (first library release), the main emphasis was on having a robust library build, management, and documentation infra-structure, rather than the actual functions. A lot of work still remains on improving the functions. Most of the interesting functions are also still locked up in the programs. But with this infra-structure in place, the next releases will greatly improve the quantity and quality of the offered library functions.
  • A new program to read and write FITS binary and ASCII tables called `Table' with the executable name `asttable'. It can also show the column information of a FITS table, or select columns with regular expressions on their title.

Here are the compressed sources:
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.2.tar.gz (4.0MB)
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.2.tar.lz (2.7MB)

Here are the GPG detached signatures, see footnote 2 (below):
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.2.tar.gz.sig
http://ftp.gnu.org/gnu/gnuastro/gnuastro-0.2.tar.lz.sig

Use a mirror for higher download bandwidth:
http://ftpmirror.gnu.org/gnuastro
or
http://www.gnu.org/order/ftp.html
(Note that mirrors will need some time to synchronize with the main server)

Here are the MD5 and SHA1 checksums of the tarballs.

175ee211b20d6a667a7186f564b5cc79 gnuastro-0.2.tar.gz
2f68cead777e4a6d38d1bccb7c200362 gnuastro-0.2.tar.lz
703918a2f180e3c448c66fc6e8180f40a15bb460 gnuastro-0.2.tar.gz
fbfd3eccf0fc15f49cb25b30ffa5dc95a74d30fc gnuastro-0.2.tar.lz

Mosè Giordano and Vladimir Markelov contributed to the code in this release. I am also very grateful to Alan Lefor, Yahya Sefidbakht, and Mohammad-reza Khellat for their many patient tests during development along with useful comments and suggestions.

Gnuastro 0.2 tarball was bootstrapped with the following tools:
Texinfo 6.1
Autoconf 2.69
Automake 1.15
Libtool 2.4.6
Help2man 1.47.3
Gnulib v0.1-898-ge63f5eb
Autoconf Archives v2016.09.16-8-g8a6b028
Note that these are not installation dependencies, for those, please see
https://www.gnu.org/software/gnuastro/manual/html_node/Dependencies.html

Cheers,
Mohammad Akhlaghi

--
Postdoctoral research fellow
CRAL (Lyon Observatory), France.

Footnote 1

Noteworthy changes in release 0.2 (library 0.0.0) (2016-10-03) [stable]

Bug fixes
  • Linker errors on some operating systems have been fixed (bug #48076).
New programs or headers
  • Table: a new utility to read and write FITS binary and ASCII tables. It can also print the column information or select columns using regular expressions (task #13579).
  • Shared libraries and headers are now installed. The libraries can be used in C and C++ programs. This release includes the following headers: `gnuastro.h', `array.h', `box.h', `fits.h', `linkedlist.h', `mesh.h', `polygon.h', `qsort.h', `spatialconvolve.h', `statistics.h', `threads.h', `wcs.h', `txtarray.h' (task #13765).
  • Gnuastro now comes with a script in its top source directory (`tmpfs-config-make') to configure and build it in the tmpfs (on the RAM), for those systems that have it. See the new "Configure and build in RAM" section in the book for more (task #14100).
New features
  • Flat profiles in MakeProfiles can be given a profile specific value. The new `--mforflatpix' option MakeProfile will use the value in the magnitude column as a fixed value for each pixel. This can be very useful in defining a mask, or creating segmentation maps or labeled images (task #14115).
  • MakeProfiles can now use input image as canvas. Instead of specifying the WSC and image size paramteres manually. With the new `--inputascanvas' option, MakeProfiles will get this information (along with blank pixels) from an already existing image (task #14116).
  • Type of output in MakeProfiles and Arithmetic can be specified with the `--type' option.
  • Magnitude error column in MakeCatalog with the `--magnitudeerr' option.
  • Arithmetic now has new conditional (task #13870) and logical operators (task #14153) along with an operator for actions only when conditions are true: `where'. The new `isblank' operator will also enable you to select blank, or masked, pixels (task #14146).
  • The `--noerodequant' in NoiseChisel enables it to detect small and sharper profiles by disabling erosion on pixels above a certain quantile (task #14139).
  • MakeCatalog can also calculate the upper limit magnitude for each given object in the image by randomly positioning the object's footprint over undetected regions of the image (task #14167).
  • The source tarball is now also distributed with Lzip for a much better compression ratio and more robust archival file format.
Changes in behavior
  • The two MakeProfiles options `--setconsttonan', `--setconsttomin' have been removed (see `--mforflatpix' above for their alternative).
  • MakeCatalog makes clump catalog only when asked (when the `WCLUMPS' header exists in the objects HDU). This can be very useful in cases like aperture photometry, when the object labels are not generated by NoiseChisel and so a clump image doesn't exist (task #14122).
  • Default cosmological parameters in CosmiCalculator set to Plank 2015 results: A&A (2016), 594, A13 (arXiv 1502.01589).
  • The `--envseed' option (to read random number generator type and seed from the environment) to MakeProfiles and MakeNoise can also be given in the configuration files.

Footnote 2

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 (similar for `tar.lz' files):

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 October 03, 2016 01:27 PM

grep @ Savannah

grep-2.26 released [stable]

by Jim Meyering at October 03, 2016 02:26 AM

October 02, 2016

GNUnet News

GNUnet for Gentoo

In summer 2015 I started to package GNUnet for Gentoo as contributor to the youbroketheinternet-overlay.

This short post is to announce that, among other packages, you can now build and install GNUnet (and gnunet-gtk, gnurl) on Gentoo as easy as:

by ng0 at October 02, 2016 11:16 PM

Lonely Cactus

The Bug Report

So I get a bug report. It is on GNU/Linux, of course, because that is the only ecosystem that sends bug reports.

So first I boot up my work box (Computer #1, Windows 10) which is the one that has the sweet monitor and try to VPN to the Server box (Computer #2, GNU/Linux Fedora Server, amd64).  But, of course, at one point I'd stripped all the non-console-mode functionality off of the server, so VPN is a fail.  I could have done the fix easily via ssh and emacs-nox, but, I figure it will only take a minute to get a graphical environment up and running.

There's a GNU Linux VM running on VirtualBox on the work box, but, I get distracted from the actual problem when I can't figure out how to get VirtualBox to create a large screen.  Totally not a problem, but, I get obsessed with this minutiae and can't let it go. I waste time tweaking the virtual graphics card settings with no effect.

So then I boot up the old linux box (Computer #3, GNU/Linux Fedora Workstation). It is 64 bit, but, it is running the i686 distro for reasons lost to history.  And then I remember that when I upgraded my wireless router, it stopped connecting via USB-connected Wifi. There are wpa_supplicant errors. Don't know why.  Spent a couple of hours trying to make it work.

Thus, I drag the old linux box to the room with the router so I can plug it in directly.  The only table is covered in padlocks, bottles of sunscreen, beads, jars of coins, and multiple Rubik's Cubes.  I clear a space.


The power cable to the spare monitor has gone missing.  It is a tiny HP w17e, but, still higher resolution than what I was getting from VirtualBox.   I search for 20 minutes. Eventually steal the power cable from work box.  My mostly ruined back complains when I shimmy under the desk to untangle it from the cable octopus.

I boot up old linux box.  Huh, it is only 100BaseT.  I dutifully do a "dnf upgrade". 1404 packages to update.  That takes another half hour.

And thus, I've used up the four hours of Saturday morning time which is the only time I have to devote to personal hacking.  Sorry bug reporter.  I'm too stupid to work on your request, and the computer gods hate me.  Better luck next week.

by Mike ([email protected]) at October 02, 2016 04:40 PM

October 01, 2016

rush @ Savannah

Version 1.8 Released

GNU Rush version 1.8 is available for download from Main GNU and GNU.ORG.UA archives.

New in this version:

rushlast and rushwho

Select the most suitable time representation for the duration field, depending on the requested width.

Chroot Handling

If chroot is requested, re-read the password database after chrooting.

Supplementary User Groups

Set supplementary groups when switching to user privileges.

Change Provisions for Interactive Shell Usage

Interactive rules are marked with the keyword "interactive". Only such rules are considered when rush is invoked without the -c option. Support for the old (global) interactive keyword is discontinued.

The "env" Statement

The env statement can contain references to unmodified environment variables. E.g. this is now valid:

Testsuite is Provided

Bugfixes

  • Minor fix in TXPMUX code.
  • Fix CVE-2013-6889

Manpages are Provided

by Sergey Poznyakoff at October 01, 2016 09:20 AM

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”1 to an audience of over 1500 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?”2 on September 27th:

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

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 [email protected] 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 August 20thth, 2016, Pittsburgh, PA, speech will soon be available in our audio-video archive.
2. A recording of RMS's September 27th, 2016, Fresno, CA, speech will soon be available in our audio-video archive.

September 30, 2016 04:25 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 [email protected]. 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