Friday, September 27, 2013

Happy 30th Birthday, GNU!

On 27 September 1983 Richard M. Stallman posted the following message to a newsgroup:

From CSvax:pur-ee:inuxc!ixn5c!ihnp4!houxm!mhuxi!eagle!mit-vax!mit-eddie!RMS@MIT-OZ
From: RMS%MIT-OZ@mit-eddie
Newsgroups: net.unix-wizards,net.usoft
Subject: new Unix implementation
Date: Tue, 27-Sep-83 12:35:59 EST
Organization: MIT AI Lab, Cambridge, MA

Free Unix!

Starting this Thanksgiving I am going to write a complete
Unix-compatible software system called GNU (for Gnu's Not Unix), and
give it away free(1) to everyone who can use it.
Contributions of time, money, programs and equipment are greatly

To begin with, GNU will be a kernel plus all the utilities needed to
write and run C programs: editor, shell, C compiler, linker,
assembler, and a few other things.  After this we will add a text
formatter, a YACC, an Empire game, a spreadsheet, and hundreds of
other things.  We hope to supply, eventually, everything useful that
normally comes with a Unix system, and anything else useful, including
on-line and hardcopy documentation.

GNU will be able to run Unix programs, but will not be identical
to Unix.  We will make all improvements that are convenient, based
on our experience with other operating systems.  In particular,
we plan to have longer filenames, file version numbers, a crashproof
file system, filename completion perhaps, terminal-independent
display support, and eventually a Lisp-based window system through
which several Lisp programs and ordinary Unix programs can share a screen.
Both C and Lisp will be available as system programming languages.
We will have network software based on MIT's chaosnet protocol,
far superior to UUCP.  We may also have something compatible
with UUCP.

Who Am I?

I am Richard Stallman, inventor of the original much-imitated EMACS
editor, now at the Artificial Intelligence Lab at MIT.  I have worked
extensively on compilers, editors, debuggers, command interpreters, the
Incompatible Timesharing System and the Lisp Machine operating system.
I pioneered terminal-independent display support in ITS.  In addition I
have implemented one crashproof file system and two window systems for
Lisp machines.

Why I Must Write GNU

I consider that the golden rule requires that if I like a program I
must share it with other people who like it.  I cannot in good
conscience sign a nondisclosure agreement or a software license

So that I can continue to use computers without violating my principles,
I have decided to put together a sufficient body of free software so that
I will be able to get along without any software that is not free.

How You Can Contribute

I am asking computer manufacturers for donations of machines and money.
I'm asking individuals for donations of programs and work.

One computer manufacturer has already offered to provide a machine.  But
we could use more.  One consequence you can expect if you donate
machines is that GNU will run on them at an early date.  The machine had
better be able to operate in a residential area, and not require
sophisticated cooling or power.

Individual programmers can contribute by writing a compatible duplicate
of some Unix utility and giving it to me.  For most projects, such
part-time distributed work would be very hard to coordinate; the
independently-written parts would not work together.  But for the
particular task of replacing Unix, this problem is absent.  Most
interface specifications are fixed by Unix compatibility.  If each
contribution works with the rest of Unix, it will probably work
with the rest of GNU.

If I get donations of money, I may be able to hire a few people full or
part time.  The salary won't be high, but I'm looking for people for
whom knowing they are helping humanity is as important as money.  I view
this as a way of enabling dedicated people to devote their full energies to
working on GNU by sparing them the need to make a living in another way.

For more information, contact me.
Arpanet mail:


US Snail:
  Richard Stallman
  166 Prospect St
  Cambridge, MA 02139

Tuesday, September 10, 2013

Git/Subversion Error: "Index mismatch: [hash] != [hash]"

The Problem

Our source code is stored in a Subversion repository (it's an Apache project) and I use Git to clone that repo for work. This morning I attempted to update my local repo when the following happened:

^_^ [J:0/1003] mcpierce@mcpierce-laptop:Qpid (upstream) $ git svn rebase
Index mismatch: e5893616e68dba2bd8a730609d872f19517e0536 != 93c1bfda2ff4e72a1ae1fbc8374d42ebe107e1f5
rereading 695961e1cc7749916959f1f74db659e90e0d2dcc
 M qpid/cpp/src/qpid/broker/SessionState.h
 M qpid/cpp/src/qpid/broker/SemanticState.cpp
 M qpid/cpp/src/qpid/broker/SessionState.cpp
Author: pmoravec not defined in .git/authors.txt file

The user "pmoravec" was recently added as a committer to the project and his first commit apparently threw my git clone of the subversion repository off.

The Solution

For me it was a simple solution. I simply had to pull down the updated authors.txt file from Apache that included pmoravec and replace the one in my git repo:

^_^ [J:0/1029] mcpierce@mcpierce-laptop:Qpid (master) $ wget

Done and one, now I'm back to work.