GNU Emacs 22: World’s Greatest Software Package

The GNU project has released Emacs 22. For the curious, now is a good time to try the World’s greatest software package. There is even an Emacs tour for people to take a look first.

Emacs development began in 1976 and has been active development ever since. It was built for extensibility, and for thirty years, users have been adding and smoothing the features that make their daily work easier. The documentation for GNU Emacs is also amazing. As well as the comprehensive manual, there is convenient per-function and per-variable information available from within Emacs.

When I moved from ViM to Emacs in 2002, I was amazed that most of the mildly complex tricks that I learned with ViM were coded into Emacs and available at a key press. It’s definitely the piece of software the contributes most to the efficiency of my computer usage.

Version 22 doesn’t have a killer feature, there are just jumper loads of changes that make things more like you’d expect or more convenient, such as:

  • The TRAMP packages for editing remote files transparently over FTP or SSH etc. is included
  • Now follows convention of ‘left mouse click to follow link’.
  • Can now handle 256 megabyte files on 32-bit machines.
  • C-x eee now executes the last macro 3 times, so you don’t have to C-x e C-x e C-x e
  • The new Kmacro package has added a load of other conveniences too.
  • GTK+ gui support, although I don’t use those features.
  • Better interface defaults: syntax highlighting is on by default and the colour scheme is much easier on the eyes.
  • New longlines-mode for editing paragraph-style documents which don’t start a new line in the file for each line displayed on the screen.
  • Consistent display of lists of messages with line numbers such as the results of grep or html validation.

A list of notable changes can be seen in the NEWS file. There are new features for programmers, but I’m not one (any more). And there is better support for editing files in Asian writing systems, and for users of non-standard hardware and operating systems, but I can’t comment on any of those features either.

Tips and tricks for Emacs can be found on this independent site: http://www.emacswiki.org/, and the Emacs article on Wikipedia is quite good. And discussion of the release can be found on LWN.net, Slashdot, OSNews, etc.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

GPLv3 dd4 is out: last call!

The GPLv3 process has entered it’s final stage with FSF releasing GPLv3 discussion draft 4. Some particularly good news is that this draft is finally compatible with the Apache licence.

Accompanying this "last call draft" is:

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

Act now on next week’s EP vote on IPRED2

"IPRED2", a proposed EU directive to criminalise copyright, patent, and trademark infringement, will be voted on next week in Strasbourg. The MEPs are talking about it in their meetings this week, so it is important to contact them as soon as possible to tell them what we think.

I will be sending an open letter from FSFE to the MEPs tonight, after translations are completed.

The proposed text, in all formats and languages, can be found on the proposal’s eur-lex page. FSFE endorses amending that text with the compromise amendments hosted on FFII’s site.

The status of the Directive can be followed on the proposal’s Legislative Observatory page.

And more information can be found on the Copy Crime website, and on FSFE’s IPRED2 page. In particular, it is worth signing the petition on the Copy Crime site.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

Transcript: Stallman on GPLv3, April 1st 2007 in Brussels

A transcript is now online of: RMS’s April 1st GPLv3 talk. Audio and video recordings will be online later today. Topics covered in the talk include:

Hopefully this transcript will raise discussion and help people understand the GPLv3 process so that they can participate. Please pass the link on to forums and lists where it might be useful.

After the talk, despite being very tired, Richard also gave time for an interview, which is online now which covers GPLv3 and more general topics.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

GPLv3 draft 3 to be released Wednesday March 28th

Update: FSF has now confirmed this by posting an updated GPLv3 timetable.

According to Bruce Perens, discussion draft 3 of GPLv3 is due to be published on Wednesday March 28th:

At the FSF general meeting today, Richard Stallman announced that the third discussion draft of GPL version 3 will be released on Wednesday and will be open for public comment. This will be moved briskly into a last-call version, and they hope to close in early June. This version has an additional paragraph that addresses anyone who tries to do what Microsoft is currently doing in the Novell-Microsoft agreement. The language to address anyone who tries to do what Novell is doing is still being constructed, Eben Moglen commented to me that Richard has rejected the latest and best proposal for Novell-role language and that they will formulate new language and try again.

Source: http://technocrat.net/d/2007/3/24/16783/

It’s interesting to see that draft 3 aims to prevent both roles in the deal, that of Microsoft and that of Novell.

People interested in GPLv3 might find these previous blog entries interesting:

And, for anyone who can make it to Brussels, Richard will give a talk there on April 1st: GPLv3: Improving a Great Licence. We’ll try to record it, and if all goes well, I’ll make a transcript, like the previous transcripts.

Lastly, a note for German speakers out there. Guido Arnold has just finished a German translation of Richard Stallman’s March 9th 2006 free software talk and Q&A. UPDATE: I also just saw that Rolf Camps has made a Dutch translation of that talk.

UPDATE: FSF has now confirmed this by posting an updated GPLv3 timetable.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

GPLv3: Simplicity and Length

Everyone wishes that free software licences were shorter. The good news from the GPLv3 process is that by changing the LGPL from being a whole licence to being an additional permission that can accompany the GPL, the LGPL has shrunk drastically and the proposed GPL and LGPL texts, combined, are shorter than the current GPL and LGPL combined. But GPLv3 itself will indeed be longer than version 2 is.

Additional words are necessary to protect against additional problems, to ensure it works the same across national boundaries, and to clarify the meaning of the licence. Since FSF started soliciting comments in January 2006 about how to improve the GPL, there have been few or no suggestions as to how it could be significantly shortened.

But longer doesn’t have to mean more complex. GPLv3 is simpler in some ways, and I’d like to describe how it was made simpler so that maybe some people can see other parts of the licence that those same principles can be applied to.

  • Clarity of wording: When something is not defined, the reader will have to check their local laws to see what happens in undefined cases. For example, "distribution" was undefined in GPLv2, but re-labelled as "conveying" in v3 to avoid clashing with existing definitions of "distribution" in local laws, and it has been defined. This should make it easier to comply with the licence.
  • Clarity of intent: Similarly, GPLv3 adds words to clarify what is intended to happen in new circumstances, such as described in the recent piece I wrote on GPLv3 and the EUCD/DMCA.
  • Labelling: Each section in v3 has a descriptive title, unlike version 2 where each section only had a number. This just makes it easier to find what you’re looking for.
  • Layout: All related things should be grouped together, and each clause should be in the section you’d most expect it to be in.

The number of words needed to ensure that software users had the four freedoms in the 1970s was zero. There were no software patents, no DMCA/EUCD laws, software generally came with source code, and there was generally nothing limiting a person from redistributing software.

As software distributors started blocking these freedoms by legal and technical means, it became necessary for software that was intended to come with those freedoms to be accompanied by licences granting those freedoms and requiring others to pass them on when they pass on the software.

GPLv1, written in 1989, had 1,500 words. GPLv2 has 2,300 words. Draft 2 of GPLv3 has 4,000 words. The most important implementation detail is that it has to work in court, and this can’t be compromised for the sake of making a shorter text. But if you can see ways to make it simpler, that would be very useful because it’s not only technology lawyers that have to read the GPL, it’s software developers and judges too.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

Why GPLv3 says additional permissions are removable

  1. Intro
  2. Why this changes nothing substantial
  3. If they’re removable, is there a point?
  4. Can’t I require that others preserve my additional permissions?
  5. Permissions and requirements

Intro

As with any copyright licence, software developers who use any version of the GPL can also grant additional permissions to recipients for code that they hold the copyright of. That is, they can say that you can distribute the software under the terms of the GPL, and they can additionally say that, at your option, you can also distribute the software in this way or that way.

About such additional permissions, the following words are proposed for GPLv3, in discussion draft 2: "When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it." As I see it, these words actually don’t change the nature of such additional permissions at all. This topic has come up a few times when I’ve been discussing GPLv3 with people, so here’s my understanding of this issue.

Why this changes nothing substantial

If person A writes some code and puts a notice on it saying "this software can be distributed under the terms of the GPL, or, at your option, you can blah blah blah…", and person B gets a copy and writes some more code and person B puts a notice on their code saying their code "can be distributed under the terms of the GPL", then the only way to distribute the combination of A’s code plus B’s code would be to distribute it under the GPL. The additional permission, which is only on A’s code, would not apply to B’s code and would therefor not be an option for distributing the combination as a whole.

Thus, third-parties can always render additional permissions inapplicable to their forked versions of a project. This is true for any version of the GPL. The third party just has to modify the software in some way and add their copyright notice to their modifications. GPLv3 doesn’t change this. The meaning of the change proposed for GPLv3 is simply that you don’t have to keep those inapplicable legal notices in your project. If you like, you can delete them.

The benefit is that it avoids the messy situation where some code in a project previously had additional permissions, and now it’s hard to separate the old code from the new code. Instead, if someone wants to use the additional permission, they should get an old copy from when the additional permission applied to the whole program, and use that. This doesn’t change what code can be used with the additional permission, it’s ensures that people do it in the legally clean way.

If they’re removable, is there a point?

Some people have asked "But if they can be removed, aren’t additional permissions meaningless?"

Whether some third-party removes them or not doesn’t change that they are available in the original version.

If you publish your software with an additional permission, and I start redistributing your software but with the additional premission removed, then anyone who wants to make use of the additional permission will simply ignore my version of it and get it from you.

Can’t I require that others preserve my additional permissions?

Some people also asked "But what if I want my additional permission to apply to all later versions of the program, including other people’s modified versions of my program?"

The problem there is that if you only allow people to add code to your project when their code is under the GPL plus the same additional permission that you’re using, then, obviously, you are prohibiting people from adding plain GPL’d code to your project or combining your project and another project that is under the plain GPL.

If you do that, then you’ve made a new GPL-incompatible licence. No one can use your code in their GPL’d projects, and you can’t use anyone else’s GPL’d code in your project. Version 1 of the GPL was written in 1989 to replace the various incompatible licences of the GNU projects. Version 2 also ensured that all GPL’d projects could share code, and version 3 will too.

Permissions and requirements

Additional permissions should not be confused with additional requirements. Additional requirements are another topic altogether and have almost nothing in common with additional permissions. For some explanation of additional requirements, see How GPLv3 Tackles Licence Proliferation.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

How GPLv3 addresses the EUCD and DMCA

Draft 3 of GPLv3 should be out Real Soon Now, so I’d like to review some of the topics. I couldn’t find a thorough explanation of how GPLv3 will deal with the "anti-circumvention" clauses of the DMCA and it’s EU counterpart, the the EUCD (see Article 6), so here’s my layperson understanding.

These laws harm society in a number of ways. Some general information can be found on FSFE’s EUCD page but here I just want to look at how these laws could cause problems for free software developers and distributors, and what free software licences can do about them.

I see two potential problems:

  1. A copyright holder could publish a work and authorise one free software application to access that work, and if a software developer wrote another application to access that same work, the copyright holder could accuse the second developer of copyright infringement for using an unauthorised piece of software to access the copyrighted work.
  2. A copyright holder could publish a work and publish a free software program that is authorised for accessing that work, but if a software developer modified that free software program, the copyright holder could accuse that software developer of copyright infringement for using software other than the single authorised version.

I hope both cases would be thrown out of court by any judge, but there’s no reasons to leave it to chance or to leave such uncertainty there.

Section 3 of Draft 2 of GPLv3 contains this wording:

3. No Denying Users’ Rights through Technical Measures.

Regardless of any other provision of this License, no permission is given for modes of conveying that deny users that run covered works the full exercise of the legal rights granted by this License.

No covered work constitutes part of an effective technological "protection" measure under section 1201 of Title 17 of the United States Code. When you convey a covered work, you waive any legal power to forbid circumvention of technical measures that include use of the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing the legal rights of third parties against the work’s users.

The meat is in the last paragraph. Sentences one and two seem to address problems one and two, respectively, that I described above.

Some people have wondered if this will work. Some say this is like declaring "this leaf is not cannabis" – but the situations are not analogous. That cannabis leaves are what they are is a fact of nature, but whether or not a software mechanism is an anti-circumvention system, that depends on the intent of the person who created the mechanism. Eben Molgen answered this last June:

I expect that US courts will be instructed on the intention of the licensor to reject the features of DMCA as it applies to GPL software. I expect the United States courts to listen closely to statements of the licensor’s intent, because under US copyright law it is the licensor’s intent which normatively determines the content of licence.

In the typically cuatious words of a lawyer, I guess he’s saying that he can’t predict the future but it looks like it should work.

Another document with information about this the "Opinion on DRM" which was published along with draft 2 of GPLv3:

The rise of free software is accompanied by a rise in the incentives for opponents to find loopholes and ways to exploit our licences. The extra clarifications like these are being added to the licence to protect the right of everyone to modify the software and distribute modified versions. These clarifications make the licence longer, but I think they reduce complexity at the same time because if GPLv3 said nothing about certain issues, then users of the GPL would have to additionally investigate the status of a program that has no explicit statement about that issue.

A complete solution to the EUCD/DMCA involves getting laws changed, and that means either getting involved in lobbying or supporting lobby groups which are representing positions you agree with. Like software patents, GPLv3 can’t make the whole of this problem go away, but it can protect us in some situations, so now is the time to think of when and how GPLv3 can protect us in these and similar situations.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship

WikiProject Free Software launches on Wikipedia

On Wikipedia, WikiProject Free Software has launched. The goals are to raise the quality of existing free software articles and to fill in any information gaps about the topic. It’s a new initiative and hasn’t yet built up much momentum, so I thought I’d mention here where it some free software savvy people might see it and be interested in helping.

It’s over a year since I wrote about Wikipedia. That was for the launch of English Wikipedia’s Free Software Portal. When that portal launched, there were already corresponding portals on German Wikipedia and French Wikipedia.

Now, there are also free software portals in the Wikipedia’s of Arabic, Czech, Danish, Spanish, Russian, and Chinese. The idea of portals is that for a given topic, they are a better "front door" through which people can enter Wikipedia’s related content.

Some interesting topics that could be better, IMO, include:

Actually, the licences article is pretty good, but it’s a great topic, so more review and contribution would still be good.

— 
Ciarán O’Riordan,
Support free software: Join FSFE’s Fellowship