|
|
Log in / Subscribe / Register

Debian Project mourns the loss of Peter Miller

From:  Neil McGovern <neilm-AT-debian.org>
To:  debian-news-AT-lists.debian.org
Subject:  Debian Project mourns the loss of Peter Miller
Date:  Mon, 20 Oct 2014 18:15:21 +0100
Message-ID:  <20141020171521.GF18936@halon.org.uk>
Archive‑link:  Article

------------------------------------------------------------------------
The Debian Project                               https://www.debian.org/
Debian Project mourns the loss of Peter Miller          press@debian.org
October 20th, 2014             https://www.debian.org/News/2014/20141020
------------------------------------------------------------------------

The Debian Project recently learned that it has lost a member of its
community. Peter Miller died on July 27th after a long battle with
leukemia.

Peter was a relative newcomer to the Debian project, but his
contributions to Free and Open Source Software goes back the the late
1980s. Peter was significant contributor to GNU gettext as well as being
the main upstream author and maintainer of other projects that ship as
part of Debian, including, but not limited to srecord, aegis and cook.
Peter was also the author of the paper "Recursive Make Considered
Harmful".

The Debian Project honours his good work and strong dedication to Debian
and Free Software. The contributions of Peter will not be forgotten, and
the high standards of his work will continue to serve as an inspiration
to others.


About Debian
------------
The Debian Project is an association of Free Software developers who
volunteer their time and effort in order to produce a completely free
operating system known as Debian.


Contact Information
-------------------
For further information, please visit the Debian web pages at
http://www.debian.org/ or send mail to <press@debian.org>.



to post comments

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 0:39 UTC (Tue) by josh (subscriber, #17465) [Link] (13 responses)

Recursive Make Considered Harmful has been incredibly influential. Go read it: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2...

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 2:10 UTC (Tue) by wahern (subscriber, #37304) [Link] (10 responses)

If POSIX standardizes the new shell expansion variable assignment form, foo != bar, where bar is a command, then it might finally be possible to write portable non-recursive makefiles. Today I simply require GNU Make. (Technically you can write them portably today--the include statement is in POSIX--but it doesn't scale across projects because you can't automatically scope variable names.)

A cool new Make feature would be namespaces. That way you wouldn't have to explicitly use, e.g., FOO_$(d), to guarantee globally unique variable names.

I love Make's declarative language style. I find it infinitely easier to read than the alternatives, for both simple and complex builds. And I love the convenience and correctness of non-recursive makefiles; I long ago lost the habit of using `make clean` out of fear or doubt. I just wish it was easier to write non-recursive rules. People (including myself) go nuts with GNU Make templates to try to automate variable name mangling, but really it just tends to obfuscate things.

Peter Miller's paper was definitely influential. But not as widely influential as it should have been. Today most people still treat build systems, particularly Make, as-if they're merely a perfunctory place to stick your build commands.

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 2:51 UTC (Tue) by branden (guest, #7029) [Link] (7 responses)

Can you elaborate on this proposed syntax extension to POSIX sh, please?

Proposed make syntax VAR != command

Posted Oct 21, 2014 4:18 UTC (Tue) by david.a.wheeler (subscriber, #72896) [Link] (6 responses)

Parent said: "Can you elaborate on this proposed syntax extension to POSIX sh, please?"

The "!=" syntax extension is a proposal to change the POSIX specification of *make*, not of *sh*. Basically, it implements a call out to the shell. The idea is that in a makefile you can just say "VAR != ...shell_command..."; the shell command is executed and stored in VAR. The "=" hints at assignment, the "!" hints at "run a shell".

This syntax has existed in the *BSDs for many years (where it came from), and is used in various BSD makefiles. More recently it has been implemented by GNU make as well, so it already widely available. In POSIX this is proposal #337; see http://austingroupbugs.net/view.php?id=337 for more information.

Since the shell can call anything else, this capability makes it MUCH easier to create Makefiles that automatically configure themselves to the environment. It's also really easy to implement.

Proposed make syntax VAR != command

Posted Oct 21, 2014 6:53 UTC (Tue) by yann.morin.1998 (guest, #54333) [Link] (5 responses)

> The idea is that in a makefile you can just say "VAR != ...shell_command...";

So, how is it different from: VAR = $(shell shell_command)

$ cat Makefile
VAR = $(shell echo OK)
all: ; @echo "VAR='$(VAR)'"
$ make
VAR='OK'

Proposed make syntax VAR != command

Posted Oct 21, 2014 6:59 UTC (Tue) by yann.morin.1998 (guest, #54333) [Link] (4 responses)

Well, retrospectively, the above is not explicit (blame lack of caffeine...)

What I meant: why trying to standardise != rather than the $(shell ...) construct? GNU make already has $(shell).

But then, I missed the part where it says that BSD make and GNU make already both implement the !=.

/me goes and grab some more coffee... Sorry for the noise...

Proposed make syntax VAR != command

Posted Oct 21, 2014 9:58 UTC (Tue) by oldtomas (guest, #72579) [Link] (2 responses)

That would be the "ovious way", at least if you come from a shell.

But alas, $(...) is already taken in Make's syntax, to delimit the variable name (which you have to do whenever it's longer than one letter)

Proposed make syntax VAR != command

Posted Oct 21, 2014 18:12 UTC (Tue) by david.a.wheeler (subscriber, #72896) [Link] (1 responses)

Actually, $(... space_character ...) is not taken in POSIX make's syntax. A $(variable_name) refers to a macro name, but the space isn't supported in the POSIX standard. GNU make uses the space character to mean "this is a function call, not a macro reference". I proposed adding support for functions in POSIX make, since it's already in GNU make; see bug #512.

This is relevant to this discussion, because the approach Peter Miller recommends (using GNU Make) cannot be done using standard POSIX make. You have to have a few extensions, such as function calls, to address the issues that he identified.

There have been changes in the POSIX standard to respond to the problems Peter Miller found. For example, in section 5.2 he discusses "Immediate Evaluation". Peter Miller noted that standard make forces re-evaluation on every macro reference, recursively, which kills performance, and that makefiles should support immediate evaluation instead. Unfortunately, there was no way in the POSIX standard to request this. Bug #330 added standard support for immediate evaluation using "::=" (it's semantically the same as GNU make's ":="). I think it's fitting that his work continues to encourage improvements in the computing world.

Proposed make syntax VAR != command

Posted Oct 21, 2014 20:07 UTC (Tue) by oldtomas (guest, #72579) [Link]

Ah, clever.

Thanks for this one, didn't know.

Both != and $(shell ...)

Posted Oct 22, 2014 17:53 UTC (Wed) by david.a.wheeler (subscriber, #72896) [Link]

I recommend that both != and $(shell ....) be standardized and implemented in make.

Calling out to the shell is so common and useful that it makes sense to have specialized syntax for it. Also, the specialized syntax is easy to read, and you don't have to figure out how to deal with funny escapes of characters like close parenthesis.

Function calls like $(shell ...) are more versatile, and you can combine them with other functions in various places.

Anyway, I hope that the POSIX specification of make will be extended over time, and implemented, so that issues such as the ones Peter Miller identified will be addressed.

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 15:33 UTC (Tue) by andrewsh (subscriber, #71043) [Link] (1 responses)

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 16:21 UTC (Tue) by yann.morin.1998 (guest, #54333) [Link]

I guess that, like me, you are missing a bit of caffeine. Quoting the parent:

> More recently it has been implemented by GNU make as well [...]

;-)

"Recursive Make Considered Harmful" is awesome

Posted Oct 21, 2014 4:24 UTC (Tue) by david.a.wheeler (subscriber, #72896) [Link]

"Recursive Make Considered Harmful" is an awesome paper. It points out why something that was "obviously the right thing to do" was in fact exactly the WRONG thing to do. I reference it in almost any discussion about build environments, such as my Introduction to the Autotools (autoconf, automake, and libtool). If you haven't read it, and you have anything to do with software build environments, read it.

Improving make, based in part on Peter Miller's recommendations

Posted Oct 21, 2014 22:26 UTC (Tue) by david.a.wheeler (subscriber, #72896) [Link]

For years I've been trying to slowly improve the POSIX standard for make, as well as common implementations.

If you're curious, here are the set of improvements to make that I think are needed. In many cases I've been particularly inspired by Peter Miller's paper, where he identified a set of good practices that could not be followed using just POSIX make. I'd love to see such improvements standardized and implemented; we still don't apply his insights as widely as they should be applied.

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 1:57 UTC (Tue) by voltagex (guest, #86296) [Link]

I didn't know Peter personally, but I know he was a part of the Canberra Linux community.

His website is archived - http://web.archive.org/web/20140819122904/http://miller.e...

RIP, mate.

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 2:38 UTC (Tue) by timohare (guest, #4886) [Link]

I worked with Peter, he was a thoughtful, intelligent person. He introduced me to Duff's Device, a do while loop inside a switch statement.

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 7:15 UTC (Tue) by graydon (guest, #5009) [Link]

While we never met, Peter was a role model to me. Kind, reasonable, no-nonsense, an attention to detail and a willingness to state the obvious, to remind people of their responsibilities and encourage good habits.

RMCH was an influential paper, to be sure. But it'd be a shame if his (mch larger) body of work on Aegis was forgotten; it is still (to my thinking) the state of the art, in the same way mandatory checklists in hospitals are the state of the art. Being reminded -- in fact, politely forced -- to walk changes through an explicit QA lifecycle including separate review, integration and testing, with a change-supervisor making sure you don't miss steps, omit tests, bypass the order or make incorrect assumptions about dependencies, is still something very basic that we still all manage to foul up constantly in our development processes.

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 7:30 UTC (Tue) by wfranzini (subscriber, #6946) [Link]

While RMCH was the first thing created by Peter Miller I was influenced by,
using Aegis, Peter's masterpiece, I met with:

- test driven development;
- code review;
- continuous integration (improved IMHO);

Peter Miller never claimed to have "invented" anything new with Aegis, but he has made available a tool that predate some of the Agile practices by a decade (Aegis was released the first time in 1991).

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 8:50 UTC (Tue) by lkundrak (subscriber, #43452) [Link]

Seems like he he kept a journal here; topics varying from technical matters to heartbreaking entries about his battle with illness:

http://blogs.operationaldynamics.com/pmiller/

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 11:29 UTC (Tue) by PaulWay (guest, #45600) [Link]

I only knew Peter for a handful of years, since I went to one of his CodeCon events. Knowledgeable in programming, modest, kind, sensible and social, he is a real inspiration to me.

He was not only a person of wide-ranging coding achievements, but he ran CodeCon every year that he could (take a small generator and a bunch of friends camping with laptops to get away from the chores and enjoy the company and time to code), he was a black belt in Karate (not sure exact style), and a keen and expert woodworker. His battle with Leukaemia was terrible and yet inspiring, too - his immense strength to keep on going, calmly sorting out his life, taking care of his family and doing what he could despite debilitating sickness and problem is a great example of strength of character to me.

His best exemplar: when he was undergoing chemotherapy, he took on an idle project implementing an old version of Pascal. When he felt well, he would write the tests. That way, when he felt awful he would write the code, and his wiser, abler self would be there to help him get it right. Would that we all worked that way.

Vale Peter, I still miss you.

Paul

Debian Project mourns the loss of Peter Miller

Posted Oct 21, 2014 18:49 UTC (Tue) by njs (subscriber, #40338) [Link]

.

Aegis was a <a href="https://graydon.livejournal.com/186550.html">significant influence on Monotone</a>, which begat git and mercurial. Unfortunately the most distinctively aegisy features got lost in the transition :-/. But it is entirely possible that git would not exist without aegis.


Copyright © 2014, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds