Planet GNU

Aggregation of development blogs from the GNU Project

August 27, 2014

FSF Blogs

Watch: "JavaScript: If you love it, set it free"

In his speech, John emphasized how proprietary JavaScript, which runs on the user's Web browser without being released under a free license, hurts the user's freedom to view and modify the software that they run. He also highlights some specific examples of malicious behavior by proprietary JavaScript such as blocking browser functions or recording the user's keystrokes.

Free your javascript video thumb

Watch the video on our GNU MediaGoblin instance

John discussed the progress of the FSF's Free JavaScript campaign, as well as the development of GNU LibreJS, a browser plugin built to stop non-free JavaScript from being executed on the user's computer. He also explained how simple it is to release JavaScript under a free license through Web Labels -- simple pages that enumerate the licenses of all the JavaScript distributed on a Web site -- or by adding a license tag to the code.

Through the Free JavaScript campaign, which grew out of Richard Stallman's insights in The Javascript Trap, the FSF is working to pursuade governments, NGOs, and other organizations to fix their Web sites to work without forcing the user to execute any proprietary software on their computer. The campaign is currently focusing on Reddit.

To get involved in the Free JavaScript campaign, join the low-volume Free JavaScript Action Team email list.

If you have expert-level knowledge of JavaScript or software licensing, we invite you to submit a request to join the JavaScript Developers Task Force, a discussion list that works closely with the FSF on the Free JavaScript campaign and provides technical guidance to Web sites working to free their JavaScript.

If you'd like to view the slides from John's presentation, you can view them on John's user page on LibrePlanet.

This blog post was written by FSF campaigns intern Alex Patel.

More information about the FSF's internship program is available on our Internships page.

August 27, 2014 09:27 PM

Friday Free Software Directory IRC meetup: August 29

Join the FSF and friends on Friday, August 29, from 2pm to 5pm EDT (18:00 to 21:00 UTC) to help improve 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!


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!

August 27, 2014 08:12 PM

FSF Events

FSF Web Developer Dave Thompson to speak at Software Freedom Day celebration (Cambridge, MA)

The FSF's Web developer, Dave Thompson, is going to be giving his talk "F-Droid, the Free as in Freedom Alternative to Google's 'Play' App Store" at the Software Freedom Day celebration in Cambridge, MA, this year.

This talk will be accessible to all audiences and the general public is encouraged to attend. We hope you'll be able to come.

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

August 27, 2014 09:40 AM

Richard Stallman to speak in Helsinki, Finland

This speech by Richard Stallman will be accessible to all audiences and the public is encouraged to attend.

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

Exact time and detailed location to be determined.

August 27, 2014 08:52 AM

August 26, 2014

GNU MediaGoblin

MediaGoblin 0.7.0: Time Traveler’s Delight

MediaGoblin 0.7.0: Time Traveler's Delight banner

Welcome to MediaGoblin 0.7.0: Time Traveler’s Delight! It’s been longer than usual for our releases, but we assure you this is because we’ve been traveling back and forth across the timeline picking up cool technology that spans a wide spectrum of space and time. But our time-boat has finally come into the harbor. Get ready… we’ve got a lot of cargo to unpack!

You may remember the work we are doing towards federation, and even the demo we showed earlier of that progress.

Well we’re excited to announce that the first piece towards MediaGoblin federation has landed! We don’t have server-to-server federation working yet, but we do have the first parts of the Pump API in place: you can now use the Pump API as a media upload API! Are you a python developer? Starting a client couldn’t be easier now, using PyPump! We also have a whole new section of our docs about the Pump API. There’s of course more Pump related things to come in future releases, but we’re excited to be well on our way!

jpope's blog running sandy 70s speedboat
Our new theme Sandy 70s Speedboat looks great on galleries…

Sailing into this release is an excellent new theme from Jeremy Pope: Sandy 70s Speedboat! This retro-styled, light colored theme has just enough frills to make your site look good while emphasizing the real stuff you want to show off… your media!

jpope's blog running sandy 70s speedboat
… and on individual media, too!

MediaGoblin is now using the skeleton CSS system, making it more responsive. MediaGoblin sites now adaptively fit better into a variety of resolutions, including mobile phones, across the board. (Responsive design is the thing all the cool kids are into these days right?) Now MediaGoblin is much nicer to look at on the go!

More responsive with Skeleton
Now more responsive!

We also have a new blogging media type. However, it’s very experimental and could use more testing and careful code review… but if you’re interested in testing and helping out in this area, check it out!

In addition, we have a number of features that have come in thanks to work from a grant to improve MediaGoblin in use with galleries, libraries, archival institutions, and museums. The first of these features is something people have long wanted: the ability for site administrators/curators to “feature” media to appear on the frontpage of a site.

We also now have a tool for command line bulk uploading that has come in through this grant work. Do you already have a set of media and you need to pull into a MediaGoblin instance? You can now use the command line bulk upload tool to automate pulling in that media, including setting metadata.

Showing off metadata with the Vitruvian Man

Wait, metadata? What do we mean by that? Well, what if you want to store some extra information about some work? (What year was this painting done in? If the author was different than the uploader, who was the original author? And many other things!) Now you can associate this information easily with media that you are uploading. With the appropriate plugin enabled, this information is viewable to the user… but it’s also machine readable. Now even robots can appreciate the cultural works on your MediaGoblin site!

For site administrators, we also have two new subcommands: “deletemedia” and “deleteusers”. Whew! Now you can get that cruft that shouldn’t be there off your site in an automated manner!

There are many other fixes and improvements in this release… too many to detail! But some highlights are: the long-hated “video thumbnails not generating” bug is fixed, many improvements to translations, fixes to the PDF media type, new default permissions options for the config file, new template hooks for plugins, and much, much more!

Whew… that sure is a lot! It’s good to see that our time travel madness has paid off in a bounty of fixes and improvements. In the meanwhile, this release was a huge group effort (as always!) so let’s thank our contributors for all their hard work: Aditi Mittal, Aleksej Serdjukov, Alon Levy, Amirouche Boubekki, Andrew Browning, Berker Peksag, Beuc, Boris Bobrov, Brett Smith, Christopher Allan Webber, Deb Nicholson, Elrond (of Samba TNG), Jessica Tallon, Jiyda Mint Moussa, Jeremy Pope, Laura Arjona Reina, Loïc Le Ninan, Matt Molyneaux, Natalie Foust-Pilcher, Odin Hørthe Omdal, Rodney Ewing, Rodrigo Rodrigues da Silva, Sergio Durigan Junior, Sebastian Spaeth, Sebastian Hugentobler, and Tryggvi Björgvinsson. Thanks so much everyone… we really couldn’t do it without you!

Stay tuned for more. We’ve got more cargo that’s shipping its way on in for the next release… we’d better get back to work! In the meanwhile, enjoy this release and be sure to check the release notes. And if you’re interested in joining our crew, we’d love to have you on board, so please do join us!

Happy travels, everyone!

Update: Are you upgrading from a previous version of GNU MediaGoblin? The release notes left out a step (now corrected)… you should also run the command “git submodule init && git submodule update”. Otherwise you’ll be missing out on the “skeleton” CSS framework and things will look really weird! Not to mention the sandy 70s speedboat theme! If you’re doing a new install, this won’t be a problem.

by Christopher Allan Webber at August 26, 2014 05:20 PM

August 25, 2014

Andy Wingo

revisiting common subexpression elimination in guile

A couple years ago I wrote about a common subexpression pass that I implemented in Guile 2.0.

To recap, Guile 2.0 has a global, interprocedural common subexpression elimination (CSE) pass.

In the context of compiler optimizations, "global" means that it works across basic block boundaries. Basic blocks are simple, linear segments of code without control-flow joins or branches. Working only within basic blocks is called "local". Working across basic blocks requires some form of understanding of how values can flow within the blocks, for example flow analysis.

"Interprocedural" means that Guile 2.0's CSE operates across closure boundaries. Guile 2.0's CSE is "context-insensitive", in the sense that any possible effect of a function is considered to occur at all call sites; there are newer CSE passes in the literature that separate effects of different call sites ("context-sensitive"), but that's not a Guile 2.0 thing. Being interprocedural was necessary for Guile 2.0, as its intermediate language could not represent (e.g.) loops directly.

The conclusion of my previous article was that although CSE could do cool things, in Guile 2.0 it was ultimately limited by the language that it operated on. Because the Tree-IL direct-style intermediate language didn't define order of evaluation, didn't give names to intermediate values, didn't have a way of explicitly representing loops and other kinds of first-order control flow, and couldn't precisely specify effects, the results, well, could have been better.

I know you all have been waiting for the last 27 months for an update, probably forgoing meaningful social interaction in the meantime because what if I posted a followup while you were gone? Be at ease, fictitious readers, because that day has finally come.

CSE over CPS

The upcoming Guile 2.2 has a more expressive language for the optimizer to work on, called continuation-passing style (CPS). CPS explicitly names all intermediate values and control-flow points, and can integrate nested functions into first-order control-flow via "contification". At the same time, the Guile 2.2 virtual machine no longer penalizes named values, which was another weak point of CSE in Guile 2.0. Additionally, the CPS intermediate language enables more fined-grained effects analysis.

All of these points mean that CSE has the possibility to work better in Guile 2.2 than in Guile 2.0, and indeed it does. The shape of the algorithm is a bit different, though, and I thought some compiler nerds might be interested in the details. I'll follow up in the next section with some things that new CSE pass can do that the old one couldn't.

So, by way of comparison, the old CSE pass was a once-through depth-first visit of the nested expression tree. As the visit proceeded, the pass built up an "environment" of available expressions -- for example, that (car a) was evaluated and bound to b, and so on. This environment could be consulted to see if a expression was already present in the environment. If so, the environment would be traversed from most-recently-added to the found expression, to see if any intervening expression invalidated the result. Control-flow joins would cause recomputation of the environment, so that it only held valid values.

This simple strategy works for nested expressions without complex control-flow. CPS, on the other hand, can have loops and other control flow that Tree-IL cannot express, so for it to build up a set of "available expressions" requires a full-on flow analysis. So that's what the pass does: a flow analysis over the labelled expressions in a function to compute the set of "available expressions" for each label. A labelled expression a is available at label b if a dominates b, and no intervening expression could have invalidated the results. An expression invalidates a result if it may write to a memory location that the result may have read. The code, such as it is, may be found here.

Once you have the set of available expressions for a function, you can proceed to the elimination phase. First, you start by creating an "eliminated variable" map, which initially maps each variable to itself, and an "equivalent expressions" table, which maps "keys" to a set of labels and bound variables. Then you visit each expression in a function, again in topologically sorted order. For each expression, you compute a "key", which is some unique representation of an expression that can be compared by structural equality. Keys that compare as equal are equivalent, and are subject to elimination.

For example, consider a call to the add primitive with variables labelled b and c as arguments. Imagine that b maps to a in the eliminated variable table. The expression as a whole would then have a key representation as the list (primcall add a c). If this key is present in the equivalent expression table, you check to see if any of the equivalent labels is available at the current label. If so, hurrah! You mark the outputs of the current label as being replaced by the outputs of the equivalent label. Otherwise you add the key to the equivalent table, associated with the current label.

This simple algorithm is enough to recursively eliminate common subexpressions. Sometimes the recursive aspect (i.e. noticing that b should be replaced by a), along with the creation of a common key, causes the technique to be called global value numbering (GVN), but CSE seems a better name to me.

The algorithm as outlined above eliminates expressions that bind values. However not all expressions do that; some are used as control-flow branches. For this reason, Guile also computes a "truthy table" with another flow analysis pass. This table computes a set of which branches have been taken to get to each program point. In the elimination phase, if a branch is reached that is equivalent to a previously taken branch, we consult the truthy table to see which continuation the previous branch may have taken. If it can be proven to have taken just one of the legs, the test is elided and replaced with a direct jump.

A few things to note before moving on. First, the "compute an analysis, then transform the function" sequence is quite common in this sort of problem. It leads to some challenges regarding space for the analysis; my last article deals with these in more detail.

Secondly, the rewriting phase assumes that a value that is available may be substituted, and that the result would be a proper CPS term. This isn't always the case; see the discussion at the end of the article on CSE in Guile 2.0 about CPS, SSA, dominators, and scope. In essence, the scope tree doesn't necessarily reflect the dominator tree, so not all transformations you might like to make are syntactically valid. In Guile 2.2's CSE pass, we work around the issue by concurrently rewriting the scope tree to reflect the dominator tree. It's something I am seeing more and more and it gives me some pause as to the suitability of CPS as an intermediate language.

Also, consider the clobbering part of analysis, where e.g. an expression that writes a value to memory has to invalidate previously read values. Currently this is implemented by traversing all available expressions. This is suboptimal and could be quadratic in the end. A better solution is to compute a dependency graph for expressions, which links together operations on the same regions of memory; see LLVM's memory dependency analysis for an idea of how to do this.

Finally, note that this algorithm is global but intraprocedural, meaning that it doesn't propagate values across closure boundaries. It's possible to extend it to be interprocedural, though it's less necessary in the presence of contification.

scalar replacement via fabricated expressions

Let's say you get to an expression at label L, (cons a b). It binds a result c. You determine you haven't seen it before, so you add (primcall cons a b) → L, c to your equivalent expressions set. Cool. We won't be able to replace a future instance of (cons a b) with c, because that doesn't preserve object identity of the newly allocated memory, but it's definitely a cool fact, yo.

What if we add an additional mapping to the table, (car c) → L, a? That way any expression at which L is available would replace (car c) with a, which would be pretty neat. To do so, you would have to add the &read effect to the cons call's effects analysis, but since the cons wasn't really up for elimination anyway it's all good.

Similarly, for (set-car! c d) we can add a mapping of (car c) → d. Again we have to add the &read effect to the set-car, but that's OK too because the write invalidated previous reads anyway.

The same sort of transformation holds for other kinds of memory that Guile knows how to allocate and mutate. Taken together, they form a sort of store-to-load forwarding and scalar replacement that can entirely eliminate certain allocations, and many accesses as well. To actually eliminate the allocations requires a bit more work, but that will be the subject of the next article.

future work

So, that's CSE in Guile 2.0. It works pretty well. In the future I think it's probably worth considering an abstract heap-style analysis of effects; in the end, the precision of CSE is limited to how precisely we can model the effects of expressions.

The trick of using CSE to implement scalar replacement is something I haven't seen elsewhere, though I doubt that it is novel. To fully remove the intermediate allocations needs a couple more tricks, which I will write about in my next nargy dispatch. Until then, happy hacking!

by Andy Wingo at August 25, 2014 09:48 AM

GNUnet News

Talk @ GHM: The GNU Name System

On August 16rd 2014, Christian Grothoff gave a talk on "The GNU Name System" at GHM 2014 hosted at TUM. You can now find the video below.

by Christian Grothoff at August 25, 2014 07:45 AM

August 24, 2014

GNU Project news

GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: Nick Clifton: August 2014 GNU Toolchain Update

Hi Guys,

  Here are the highlights of this month's changes in the GNU Toolchain:

  * The linker now accepts --push-state and --pop-state command line options.  The --push-state option preserves the current state of the flags which govern the input file handling, such as --as-needed, --whole-archive and so on.  (The full list is in the linker documentation).  The idea is that components of a build system can safely insert options into the linker command line without having to be aware of what options may have previously been added.  So for example a tool could add:

      --pushstate --as-needed -libone -libtwo --pop-state

    at any point in the linker command line and be sure that it will work as expected, even if the rest of the command line was using --no-as-needed.

  * The x86/PE linker supports a new option: --high-entropy-va which marks the binary being generated as being compatible with 64-bit address space layout randomization (ASLR).

  * The compiler driver program (gcc or g++) will now pass:

      -z <foo>

    Directly on to the linker.  This allows slightly easier access to these linker command line options.

  
  * The compiler now supports some new warning options:

     -Wbool-compare

    Which warns about boolean expressions that are compared with an integer value different from true/false.  For example:

      int n = 5;
      if ((n > 1) == 2) { ....


     -Wc90-c99-compat

    This warns about features used in the program that are present in the ISO C99 standard but not present in ISO C90 standard.

     -Wc99-c11-compat
  
    Similarly this warns about the use of ISO C11 features that are not present in ISO C99.

     -Wno-designated-init

    This disables warnings about positional initialization of structs that requiring designated initializers.  (See below).

      -Wmemset-transposed-args

    This warns about suspicious calls to memset where the third argument is a literal zero and the second is not.  For example:

      memset (buf, sizeof buf, 0)

    where the second and third arguments are the wrong way around.
    
      -Wsuggest-final-types

    This warns about types with virtual methods where code quality would be improved if the type was declared with C++11 final specifier, or, if possible, declared in anonymous namespace.  This allows GCC to devritualize more aggressively the polymorphic calls.  This warning is more effective with link time optimization, where the information about the class hierarchy graph is more complete.

      -Wsuggest-final-methods

    Similarly this warns about virtual methods where code quality would be improved if the method was declared with C++11 final specifier, or, if possible, its type was declared in the anonymous namespace or with final specifier.
  
  * The compiler now supports a new type attribute called:
  
      designated_init
    
    This attribute may only be applied to structure types.  It indicates that any initialization of an object of this type must use designated initializers:

      struct point { int x; int y };
      struct point p = { .y = 1, .x = 2 };

    
    Rather than positional initializers:

      struct point p = { 2, 1 };
    
    The intent of this attribute is to allow the programmer to indicate that a structure's layout may change, and that therefore relying on positional initialization will result in future breakage.

    Attempts to use positional initialization on a structure annotated with this new attribute will generate a compile time warning unless the new -Wno-designated-init command line option is used.

  * The compiler's sanitizer has two new features:

    -fsanitize=kernel-address

     Which enables AddressSanitizer for Linux kernel.  See
     http://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel
     for more details.

     -fsanitize=alignment

     Which enables checking of alignment of pointers when they are dereferenced, or when a reference is bound to insufficiently aligned target, or when a method or constructor is invoked on insufficiently aligned object.

   * The C and C++ compilers have a new optimization which is enabled automatically at -O2 and above:

      -foptimize-strlen

     This optimizes various standard C string functions (e.g. strlen, strchr or strcpy) into faster alternatives, where this is possible.

Cheers
  Nick

August 24, 2014 06:18 PM

GNUtls

GnuTLS 3.3.7, 3.2.17 and 3.1.26

Released GnuTLS 3.3.7, GnuTLS 3.2.17, GnuTLS 3.1.26, which are bug-fix releases on the next, current and previous stable branches respectively.

by Nikos Mavrogiannopoulos (nmav@gnutls.org) at August 24, 2014 12:00 AM

August 22, 2014

parallel @ Savannah

GNU Parallel 20140822 ('Williams') released

GNU Parallel 20140822 ('Williams') has been released. It is available for download at: http://ftp.gnu.org/gnu/parallel/

Haiku of the month:

code fork headache blues?
option P is your new friend
`man parallel` now!
-- Malcolm Cook

New in this release:

  • GNU Parallel now uses the same shell it was started from as the command shell for local jobs. So if GNU Parallel is started from tcsh it will use tcsh as its shell even if the login $SHELL is different. For remote jobs the login $SHELL will be used.
  • The whole current environment in bash can be copied by using a shell wrapper function (Search manual for env_parallel).
  • --plus adds the replacement strings {+/} {+.} {+..} {+...} {..} {...} {/..} {/...}. The idea being that '+foo' matches the opposite of 'foo' and {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...}
  • GNU Parallel now deals correctly with the combination rsync-3.1.X-client and rsync-2.5.7-server
  • 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 is 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.

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 August 22, 2014 10:43 PM

FSF News

GNU hackers unmask massive HACIENDA surveillance program and design a countermeasure

After making key discoveries about the details of HACIENDA, Julian Kirsch, Dr. Christian Grothoff, Jacob Appelbaum, and Dr. Holger Kenn designed the TCP Stealth system to protect unadvertised servers from port scanning.

According to Heise Online, the intelligence agencies of the United States, Canada, United Kingdom, Australia and New Zealand are involved in HACIENDA. The agencies share the data they collect. The HACIENDA system also hijacks civilian computers, allowing it to leach computing resources and cover its tracks.

Some of the creators of TCP Stealth are also prominent contributors to the GNU Project, a major facet of the free software community and a hub for political and technological action against bulk surveillance. Free software is safer because it is very hard to hide malicious code in a program anyone can read. In proprietary software, there is no way to guarantee that programs don't hide backdoors and other vulnerabilities. The team revealed their work on August 15, 2014 at the annual GNU Hackers' Meeting in Germany, and Julian Kirsch published about it in his master's degree thesis.

Maintainers of Parabola, an FSF-endorsed GNU/Linux distribution, have already implemented TCP Stealth, making Parabola users safer from surveillance. The FSF encourages other operating systems to follow Parabola's lead.

The Free Software Foundation supports and sponsors the GNU Project. FSF campaigns manager Zak Rogoff said, "Every time you use a free software program, you benefit from the work of free software developers inspired by the values of transparency and bottom-up collaboration. But on occassions like these, when our civil liberties are threatened with technological tools, the deep importance of these values becomes obvious. The FSF is proud to support the free software community in its contributions to the resistance against bulk surveillance."

The Free Software Foundation works politically for an end to mass surveillance. Simultaneously, the Foundation advocates for individuals of all technical skill levels to take a variety of actions against bulk surveillance.

About Julian Kirsch, Christian Grothoff, Jacob Appelbaum, and Holger Kenn

Julian Kirsch is the author of "Improved Kernel-Based Port-Knocking in Linux", his Master's Thesis in Informatics at Technische Universitat Munchen.

Dr. Christian Grothoff is the Emmy-Noether research group leader in Computer Science at Technische Universitat Munchen.

Jacob Appelbaum is an American independent computer security researcher and hacker. He was employed by the University of Washington, and is a core member of the Tor project, a free software network designed to provide online anonymity.

Dr. Holger Kenn is a computer scientist specializing in wearable computing, especially software architectures, context sensor systems, human machine interfaces, and wearable-mediated human robot cooperation.

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.

About the GNU Operating System and Linux

Richard Stallman announced in September 1983 the plan to develop a free software Unix-like operating system called GNU. GNU is the only operating system developed specifically for the sake of users' freedom. See https://www.gnu.org/gnu/the-gnu-project.

In 1992, the essential components of GNU were complete, except for one, the kernel. When in 1992 the kernel Linux was re-released under the GNU GPL, making it free software, the combination of GNU and Linux formed a complete free operating system, which made it possible for the first time to run a PC without non-free software. This combination is the GNU/Linux system. For more explanation, see https://www.gnu.org/gnu/gnu-linux-faq.

Media Contacts

Zak Rogoff
Campaigns Manager
Free Software Foundation
+1-617-542-5942
campaigns@fsf.org

"Knocking down the HACIENDA" by Julian Kirsch, produced by GNU, the GNUnet team, and edited on short notice by Carlo von Lynx from #youbroketheinternet is licensed under a Creative Commons Attribution NoDerivatives 3.0 Unported License.

August 22, 2014 08:59 PM

GNU Project news

GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: FSF Events: Richard Stallman va a dar una charla en Temuco, Chile

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

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

El título de la charla será determinado.

August 22, 2014 08:50 AM

August 20, 2014

FSF Blogs

GNU hackers discover HACIENDA government surveillance and give us a way to fight back

According to Heise online, the intelligence agencies of the United States, Canada, United Kingdom, Australia, and New Zealand, have used HACIENDA to map every server in twenty-seven countries, employing a technique known as port scanning. The agencies have shared this map and use it to plan intrusions into the servers. Disturbingly, the HACIENDA system actually hijacks civilian computers to do some of its dirty work, allowing it to leach computing resources and cover its tracks.

But this was not enough to stop the team of GNU hackers and their collaborators. After making key discoveries about the details of HACIENDA, Julian Kirsch, Christian Grothoff, Jacob Appelbaum, and Holger Kenn designed the TCP Stealth system to protect unadvertised servers from port scanning. They revealed their work at the recent annual GNU Hackers' Meeting in Germany.

Please be sure to share this with everyone you know who cares about bulk surveillance.

We must fight the political battle for an end to mass surveillance and reduce the amount of data collected about people in the first place. On an individual level we have to do everything we can to thwart the surveillance programs that are already in place.

No matter your skill level, you can get involved at the FSF's surveillance page.

Ethical developers inside and outside GNU have been working for years on free software that does not keep secrets from users, and programs that anyone can review to remove potential vulnerabilities. These capabilities give free software users a fighting chance against surveillance. Now, our community is turning its attention to uncovering and undermining insidious programs like HACIENDA. Free software and its ideals are crucial to putting an end to government bulk surveillance.

Share this news with your friends, to help make people aware of the importance of free software in fighting bulk surveillance.

Jacob Appelbaum of the TCP Stealth team gave a remote keynote address at the FSF's LibrePlanet conference this year. Watch the recording of "Free Software for freedom: Surveillance and you."


"Knocking down the HACIENDA" by Julian Kirsch, produced by GNU, the GNUnet team and edited on short notice by Carlo von Lynx from #youbroketheinternet is licensed under a Creative Commons Attribution NoDerivatives 3.0 Unported License.

August 20, 2014 09:45 PM

Friday Free Software Directory IRC meetup: August 22

Join the FSF and friends on Friday, August 22, from 2pm to 5pm EDT (18:00 to 21:00 UTC) to help improve 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!


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!

August 20, 2014 08:28 PM

GNU Project news

GNU Project news: GNU Project news: FSF Events: Richard Stallman - «El movimiento del software libre» (Puerto Montt, Chile)

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.

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

August 20, 2014 11:55 AM

August 19, 2014

GNUnet News

Goodbye Munich, Bonjour Rennes!

After spending five great years at TU Munich supported by a generous five year grant from the DFG, I will be moving to a new position at Inria in Rennes where my research and development on secure, decentralised network protocols will continue.

by Christian Grothoff at August 19, 2014 08:53 PM

GNU Project news

GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: FSF Events: Richard Stallman - «Software Libre: el comienzo de tu libertad informática» (Santiago de Chile, Chile)

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.

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

August 19, 2014 08:35 PM

GNUnet News

Talk @ GHM: panicd: An approach for home routers to securely erase sensitive data

On August 15rd 2014, our student Nicolas Benes gave a talk on "panicd: An approach for home routers to securely erase sensitive data" defending his almost finished Bachelor's Thesis at GHM 2014 hosted at TUM. The goal of his work is to ensure that secrets (especially key material) stored on your hardware (especially in memory) remain secret even if an adversary attempts to take physical control over the device. You can now find the video below.

by Christian Grothoff at August 19, 2014 08:33 PM

FSF Events

Richard Stallman - «Por una sociedad digital libre» (Santiago de Chile, Chile)

Las actividades cuyo objetivo es la "inclusión" de más personas en el empleo de las tecnologías digitales se basan en la suposición de que ésto sea invariablemente algo bueno. Parecería que así es, si se juzga considerando únicamente la conveniencia práctica inmediata. Sin embargo, si juzgamos también en términos de derechos humanos, es el tipo de mundo digital en el que nos quieren insertar lo que determina si se trata de un bien o de un mal. Antes de luchar por la inclusión digital, debemos cerciorarnos de que las personas estarán en un mundo digital bueno.

Esta charla de Richard Stallman formará parte del cuarto Congreso Internacional Innovatics.

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

August 19, 2014 08:14 PM

August 18, 2014

FSF Events

Richard Stallman va a dar una charla en Culiacan

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

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

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

August 18, 2014 10:55 PM

GNU Project news

FSF Blogs

Richard Stallman's TEDx video: "Introduction to Free Software and the Liberation of Cyberspace"

RMS was invited to give a TEDx talk at "FREEDOM (@ digital age)" in April and took the opportunity to explain the fundamentals of the free software movement to the general public. In this speech, RMS specifies the issue and makes the stakes clear; he explains what a computer is and who controls it, what the various implications of free software and of proprietary software are for you, the user, what you can do to stop being a victim, what the obstacles to computer-user freedom are, and how you can make a difference.

The TEDx talks are "designed to help communities, organizations, and individuals to spark conversation and connection through local TED-like experiences." At these events, screenings of videos, like this one, "or a combination of live presenters and TED Talks videos — sparks deep conversation and connections at the local level."

We hope you share the recording, to help raise awareness and inspire conversations and connections in your own circles, and introduce a friend, loved one, or acquaintance, to this "first step in the liberation of cyberspace."

Download this video in a free format (HD) (SD).

We've embedded this talk using the HTML5 video element, but of you watch any TEDx talks on YouTube, please remember to use a free program like youtube-dl instead of your browser, because watching YouTube in your browser requires proprietary JavaScript.

Many thanks to Théo Bondolfi, François Epars, Florence Dambricourt, and the TEDxGeneva core-team for making this speech possible. Thank you to Ynternet.org and HEG-GE for hosting and supporting the event, and to Sylvain & Co., La Belle Bleue, and Jus de Fruits Suisses, ProLibre, and the Fondation Emilie Gourd, Piguet Galland & Cie., Lifelong Learning Programme, Hes.so Genève, My Big Geneva, and Smala for their support.

P.S. RMS does not draw a salary from the FSF, but your donations do support the coordination of events and videos like this. We'd love to produce more introductory videos. Can you donate $25 today?

This recording is licensed under the Creative Commons Attribution-No Derivative Works 3.0 license.

Read this post in Spanish

August 18, 2014 10:10 PM

GNU Project news

GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: GNU Project news: FSF Events: Richard Stallman - «Copyright vs Comunidad» (Valparaíso, Chile)

El copyright fue desarrollado en los tiempos de la imprenta, y fue diseñado para adecuarse al sistema centralizado de copias impuesto por la imprenta en aquella época. Pero en la actualidad, el sistema de copyright se adapta mal a las redes informáticas, y solamente puede ser impuesto mediante severas medidas de fuerza.
Las corporaciones globales que se lucran con el copyright están presionando para imponer penalidades cada vez más injustas y para incrementar su poder en materia de copyright, restringiendo al mismo tiempo el acceso del público a la tecnología. Pero si lo que queremos realmente es honrar el único propósito legítimo del copyright --promover el progreso para beneficio del público-- entonces tendremos que realizar cambios en la dirección contraria.

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

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

August 18, 2014 10:00 PM

Andy Wingo

on gnu and on hackers

Greetings, gentle hackfolk. 'Tis a lovely waning light as I write this here in Munich, Munich the green, Munich full of dogs and bikes, Munich the summer-fresh.

Last weekend was the GNU hackers meeting up in Garching, a village a few metro stops north of town. Garching is full of quiet backs and fruit trees and small gardens bursting with blooms and beans, as if an eddy of Chistopher Alexander whirled out and settled into this unlikely place. My French suburb could learn a thing or ten. We walked back from the hack each day, ate stolen apples and corn, and schemed the nights away.

The program of GHM this year was great. It started off with a bang, as GNUnet hackers Julian Kirsch and Christian Grothoff broke the story that the Five-Eyes countries (US, UK, Canada, Australia, NZ) regularly port-scan the entire internet, looking for vulnerabilities. They then proceed to exploit those vulnerabilities, in regular hack-a-thons, trying to own as many boxes in as many countries as they can. They then use them as launchpads for attacks and for exfiltration of information from other networks.

The presentation that broke this news also proposed a workaround based on port-knocking, Knock. Knock embeds the hash of a pre-shared key with some other information into the 32-bit initial sequence number of a TCP connection. Unlike previous incarnations of port-knocking, Knock also authenticates the first n payload bytes, so that the connection isn't vulnerable to hijacking (e.g. via GCHQ "quantum injection", where well-placed evil routers race the true destination server to provide the first response packet of a connection). Leaking the pwn-the-internet documents with Laura Poitras at the same time as the Knock unveiling was a pretty slick move!

I was also really impressed by Christian's presentation on the GNU name system. GNS is a replacement for DNS whose naming structure mirrors our social naming structure. For example, www.alice.gnu would be my friend Alice, and www.alice.bob.gnu would be Alice's friend Bob. With some integration, it can work on normal desktops and mobile devices. There are lots more details, so check gnunet.org/gns for more information.

Of course, a new naming system does need some operating system support. In this regard Ludovic Courtès' update on Guix was particularly impressive. Guix is a Nix-like system whose goal is reproducible, user-controlled GNU/Linux systems. A couple years ago I didn't think much of it, but now it's actually booting on raw hardware, not just under virtualization, and things seem to be rolling forth as if on rails. Guix manages to be technically innovative at the same time as being GNU-centered, so it can play a unique role in propagating GNU work like GNS.

and yet.

But now, as the dark clouds race above and the light truly goes, we arrive to the point I really wanted to discuss. GNU has a terrible problem with gender balance, and with diversity in general. Of about 70 attendees at this recent GHM, only two were women. We talk the talk about empowering users and working for freedom but, to a first approximation, it's really just a bunch of dudes that think the exact same things.

There are many reasons for this, of course. Some people like to focus on what's called the "pipeline problem" -- that there aren't as many women coming out of computer science programs as men. While true, the proportion of women CS graduates is much higher than the proportion of women at GHM events, so something must be happening in between. And indeed, the attrition rates of women in the tech industry are higher than that of men -- often because we men make it a needlessly unpleasant place for women to be. Sometimes it's even dangerous. The incidence of sexual harassment and assault in tech, especially at events, is something terrible. Scroll down in that linked page to June, July, and August 2014, and ask yourself whether that's OK. (Hint: hell no.)

And so you would think that people who consider themselves to be working for some abstract liberatory principle, as GNU is, would be happy to take a stand against this kind of asshaberdashery. There you would be wrong. Voilà a timeline of an incident.

timeline

March 2014
Someone at the FSF asks a GHM organizer to add an anti-harassment policy to GHM. The organizer does so and puts one on the web page, copying the text from Libreplanet's web site. The policy posted is:

Offensive or overly explicit sexual language or imagery is inappropriate during the event, including presentations.

Participants violating these rules may be sanctioned or expelled from the meeting at the discretion of the organizers.

Harassment includes offensive comments related to gender, sexual orientation, disability, appearance, body size, race, religion, sexual images in public spaces, deliberate intimidation, stalking, harassing photography or recording, persistent disruption of talks or other events, repeated unsolicited physical contact, or sexual attention.

Monday, 11 August 2014
The first mention of the policy is made on the mailing list, in a mail with details about the event that also includes the line:

An anti-harrasment policy applies at GHM: http://gnu.org/ghm/policy.html

Monday, 11 August 2014
A speaker writes the list to say:

Since I do not desire to be denounced, prosecuted and finally sanctioned or expelled from the event (especially considering the physical pain and inconvenience of attending due to my very recent accident) I withdraw my intention to lecture "Introducing GNU Posh" at the GHM, as it is not compliant with the policy described in the page above.

Please remove the talk from the official schedule. Thanks.

PS: for those interested, I may perform the talk off-event in case we find a suitable place, we will see..

The resulting thread goes totes clownshoes and rages on up until the event itself.
Friday, 15 August 2014
Sheepish looks between people that flamed each other over the internet. Hallway-track discussion starts up quickly though. Disagreeing people are not rational enough to have a conversation though (myself included).
Saturday, 16 August 2014
In the morning and lunch break, people start to really discuss the issues (spontaneously). It turns out that the original mail that sparked the thread was based, to an extent, on a misunderstanding: that "offensive or overly explicit sexual language or imagery" was parsed (by a few non-native English speakers) as "offensive language or ...", which people thought was too broad. Once this misunderstanding was removed, there were still people that thought that any policy at all was unneeded, and others that were concerned that someone could say something without intending offense, but then be kicked out of the event. Arguments back and forth. Some people wonder why others can be hurt by "just words". Some discussion of rape culture as continuum between physical violence and cultural tropes. One of the presentations after lunch is by a GNU hacker. He starts his talk by stating his hope that he won't be seen as "offensive or part of rape culture or something". His microphone wasn't on, so once he gets it on he repeats the joke. I stomp out, slam the door, and tweet a few angry things. Later in the evening the presenter and I discuss the issue. He apologizes to me.
Sunday, 17 August 2014
A closed meeting for GNU maintainers to round up the state of GNU and GHM. No women present. After dealing with a number of banalities, we finally broach the topic of the harassment policy. More opposition to the policy Sunday than Saturday lunch. Eventually a proposal is made to replace "offensive" with "disparaging", and people start to consent to that. We run out of time and have to leave; resolution unclear.
Monday, 18 August 2014
GHM organizer updates the policy to remove the words "offensive or" from the beginning of the harassment policy.

I think anyone involved would agree on this timeline.

thoughts

The problems seen over the last week with this anti-harassment policy are entirely to do with the men. It was a man who decided that he should withdraw his presentation because he found it offensive that he could be perceived as offensive. It was men who willfully misread the policy, comparing it to such examples as "I should have the right to offend Microsoft supporters", "if I say the wrong word I will go to jail", and who raised the ignorant, vacuous spectre of "political correctness" to argue that they should be able to say what they want, in a GNU conference, no matter who they hurt, no matter what the effects. That they are able to argue this position from a status-quo perspective is the definition of privilege.

Now, there is ignorance, and there is malice. Both must be opposed, but the former may find a cure. Although I didn't begin my contribution to the discussion in the smoothest way, linking to a an amusing article on the alchemy of intent that is probably misunderstood, it ended up that one of the main points was about intent. I know Ralph (say) and Ralph is a great person and so how could it be that anything Ralph would say could be a slur? You know he wouldn't mean it like that!

To that, we of course have to say that as GNU grows, not everyone knows that Ralph is a great person. In the end what would it mean for someone to be anti-racist but who says racist things all the time? You would have to call them racist, right? Or if you just said something one time, but refused to own up to your error, and instead persisted in repeating a really racist slur -- you would be racist right? But I know you... But the thing that you said...

But then to be honest I wonder sometimes. If someone repeats a joke trivializing rape culture, after making sure that the microphone is picking up his words -- I mean, that's a misogynist action, right? Put aside the question of whether the person is, in essence, misogynist or not. They are doing misogynist things. How do I know that this person isn't going to do it again, private apology or not?

And how do I know that this community isn't going to permit it again? That remark was made to a room of 40 dudes or so. Not one woman was present. Although there was some discussion afterwards, if people left because of the phrase, it was only two or three. How can we then say that GNU is not a misogynist community -- is not a community that tolerates misogyny?

Given all of this, what do you expect? Do you expect to grow GNU into a larger organization in the future, rich and strong and diverse? If that's not your goal, you are not my colleague. And if it is your goal, why do you put up with this kind of behavior?

The discussion on intent and offense seems to have had its effect in the removal of "offensive or" from the anti-harassment policy language. I think it's terrible, though -- if you don't trust someone who says they were offended by sexual language or imagery, why would you trust them when they report sexual harassment or assault? I can only imagine this leading to some sort of argument where the person who has had the courage to report such an incident finds himself or herself in a public witness box, justifying that the incident was offensive. "I'm sorry my words offended you, but that was not my intent, and anyway the words were not offensive." Lolnope.

There were so many other wrong things about this -- a suggestion that we the GNU cabal (lamentably, a bunch of dudes) should form a committee to make the wording less threatening to us; that we're just friends anyway; that illegal things are illegal anyway... it's as if the Code of Conduct FAQ that Ashe Dryden assembled were a Bingo card and we all lost.

Finally I don't think I trusted the organizers enough with this policy. Both organizers expressed skepticism about the policy in such terms that if I personally hadn't won the privilege lottery (white male "western" hetero already-established GNU maintainer) I wouldn't feel comfortable bringing up a concern to them.

In the future I will not be attending any conferences without strong, consciously applied codes of conduct, and I enjoin you to do the same.

conclusion


Propagandhi, "Refusing to Be a Man", Less Talk, More Rock (1996)

There is no conclusion yet -- working for the better world we all know is possible is a process, as people and as a community.

To outsiders, to outsiders everywhere, please keep up the vocal criticisms. Thank you for telling your story.

To insiders, to insiders everywhere, this is your problem. The problem is you. Own it.

by Andy Wingo at August 18, 2014 09:07 PM

GNU Project news

August 17, 2014

GNUnet News

Talk @ GHM: Knocking down the HACIENDA

On August 15th 2014, Julian Kirsch gave a talk on "Knocking down the HACIENDA" defending his Master's Thesis at GHM 2014 hosted at TUM. You can now find the video below.

by Christian Grothoff at August 17, 2014 07:59 AM

lightning @ Savannah

GNU lightning 2.0.5 released!

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

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

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

2.0.5 comes with a new port to the Alpha architecture. Thanks
to Many Trent Nelson from snakebite.net for providing access to
an Alpha computer.

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

aarch64:
o Correct assertion on uninitialized state variables.

alpha:
o Implement lightning Alpha port.

arm:
o Correct wrong table of instruction sizes in software float.
o When checking cpu features, do not get confused on Linux if /proc
is not mounted, and end up not properly checking for __ARM_PCS_VFP,
that is the best source to know if a fpu is available.

mips:
o Correct usage of wrong register in jit_bmsr, that was working
(passing all tests) by accident.

generic:
o Add consistency check on temporaries during a jump.
o Always mark return registers as live in epilog.
o Correct change of possibly wrong bitmask in jit_update.
o Convert all assertions to result in an int check.
On alpha assertions directly on a pointer or long would fail if
only checking the top 32 bits.
o Do not pass null as free, memcpy and memmove arguments.
o Remove the global but not advertised jit_progname variable.
o Add note about initialization and jit_set_memory_functions call.
o Do not export some expected to be private definitions and types in
lightning/jit_${arch}.h.

by Paulo César Pereira de Andrade at August 17, 2014 12:00 AM

August 14, 2014

parallel @ Savannah

GNU Parallel 20140815alpha released

GNU Parallel 20140815alpha has been released. It is available for download at: http://alpha.gnu.org/gnu/parallel/

New in this release:

  • GNU Parallel now uses the same shell it was started from as the command shell for local jobs. So if GNU Parallel is started from tcsh it will use tcsh as its shell even if the login $SHELL is different. For remote jobs the login $SHELL will be used.
  • The whole current environment in bash can be copied by using a shell wrapper function (env_parallel).
  • --plus adds the replacement strings {+/} {+.} {+..} {+...} {..} {...} {/..} {/...}. The idea being that '+foo' matches the opposite of 'foo' and {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...}
  • 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 is 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.

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 August 14, 2014 10:29 PM

FSF Events

Richard Stallman to speak in Portland, OR

Details about RMS's speech will be posted as soon as they become available.

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

August 14, 2014 10:24 AM