Geoff Collyer
Giganews Usenet Geschichte > Geoff Collyer
Geoff Collyer, zusammen mit Henry SpencerCo-Autor von C Nachrichtenein News-Server-Paket und einen Ersatz für B-Nachrichten. Collyer gab C News später eine neue Indexierungsfunktion namens NOV (News Overview). Dieses Indexierungssystem wird heute noch in Form des NNTP-Befehls XOVER verwendet.
Derzeit arbeitet Collyer als Mitglied des technischen Personals bei Bell Labs in Murray Hill. Dies ist seine zweite Anstellung bei Bell Labs, seine erste war von 1994 bis 2001 bei AT&T. Collyer hat an Plan 9 mitgewirkt und arbeitet immer noch an dem Projekt.
Interview (26.3.2007) mit Geoff Collyer:
1. Welche Vorteile hat das Usenet für Ihr berufliches oder akademisches Leben gebracht?
In den ersten Jahren war das Usenet eine Quelle für technische Informationen, vor allem für Fehlerbehebungen und Ideen. Wahrscheinlich wurde ich dadurch zumindest in der Usenet-Gemeinschaft eine Zeit lang bekannter. Die Entwicklung von C News verschaffte mir Arbeit in den USA und verhalf mir schließlich zu einer dauerhaften Aufenthaltsgenehmigung.
2. Wie sind Sie und Henry Spencer dazu gekommen, C News gemeinsam zu entwickeln?
Henry und ich arbeiteten anfangs etwa einen Block voneinander entfernt (ich im Rechenzentrum und er in der zoologischen Abteilung der Universität von Toronto). Wir lernten uns kennen, als ich 1981 meine Arbeit an der U of T aufnahm (Henry bewarb sich bei mir für eine Junior-Stelle in der Zoologie, bevor ich für das Rechenzentrum arbeitete). Wir hatten ähnliche Ansichten über das Programmieren (minimalistisch) und arbeiteten bei einigen kleineren Arbeiten zusammen (z. B. Korrekturen und Erweiterungen von ed(1)).
Henry betrieb V7 Unix auf einer PDP-11/44 für den Computerbedarf der Zoologie (hauptsächlich Schriftsatz), und ich war (zusammen mit einer wechselnden Gruppe von Mitarbeitern) für eine ständig wachsende Sammlung von Unix-Maschinen verantwortlich, zunächst eine PDP-11/70 mit PWB/UNIX (im Wesentlichen V6 Unix mit neueren Dienstprogrammen und einem fehlerhaften C-Compiler), die zwischen der Statistikabteilung und dem Rechenzentrum, das einen Schriftsatzdienst anbot, aufgeteilt war; eine VAX-11/750 mit 4.1BSD für den Einsatz in den Bereichen CS und Ingenieurwesen; und bald eine IBM 3033 mit Amdahls UTS unter VM/370.
Damals war Ethernet noch neu und wir hatten keins, Kanada war noch nicht am ARPAnet beteiligt, und wir hatten begonnen, ein lokal entwickeltes Netzwerk über Glasfaser (Hubnet) und SLIP über serielle Leitungen zwischen den Maschinen zu betreiben. Es war klar, dass UUCP eine nützliche Sache für die PDP-11 sein würde, aber es musste auf PWB zurückportiert werden und die Fehler im C-Compiler mussten behoben werden. Ich habe das schließlich hinbekommen, also haben wir eine UUCP-Verbindung zwischen utzoo und utcsstat, der 11/70, eingerichtet. Henry war ein Befürworter des Usenet, also portierte ich B News 2.something, wahrscheinlich 2.6, zurück und umging die Compiler-Fehler und brachte utcsstat über utzoo ins Usenet.
Fast sofort wurde klar, dass der Code von B News in einem erbärmlichen Zustand war. Es war offensichtlich, dass viele Hände mit unterschiedlichen Fähigkeiten ohne viel Koordination daran herumgeschraubt hatten, und das Ergebnis war langsam, unzuverlässig und schlichtweg fehlerhaft. Schon bald kam einer meiner Mitarbeiter im Rechenzentrum zu mir, nachdem er unsere Prozessabrechnungsdaten analysiert hatte, und wies mich darauf hin, dass Programme, die unter der Benutzerkennung "usenet" liefen, etwa ein Drittel unserer CPU-Zeit beanspruchten. Der Rechner wurde auch bei der Verarbeitung eingehender Nachrichten merklich langsamer, und dies wurde mit zunehmendem Volumen immer deutlicher.
Ich glaube, Henry hat als erster mit dem begonnen, was später zu C News wurde. Er benutzte expire ziemlich ausgiebig, archivierte Nachrichten auf Band und gab expire im Allgemeinen ein Work-out. Expire hatte Speicherlecks und andere Fehler und funktionierte schließlich mit einer neuen Version (vielleicht B 2.9) nicht mehr. Henry sah sich an, was expire tatsächlich tat, und kam zu dem Schluss, dass es nicht so schwer sein konnte, es von Grund auf neu zu schreiben, also schrieb er einen Ersatz, der das früheste C News expire wurde.
Etwas später hatte ich die Nase voll davon, dass rnews die Nachrichten verlor, wenn die Festplattenpartitionen voll waren, und generell die Ressourcen der PDP-11 auffraß, und begann, über einen Ersatz für rnews nachzudenken. Ich versuchte, B rnews so zu modifizieren, dass es sich nicht für jeden Artikel aufspaltet, aber es funktionierte einfach nicht; die Annahmen waren zu tief eingebettet und der Code war ein einziges Chaos. Die Idee eines rnews, das einen Stapel ohne Forking (mit Ausnahme von Kontrollmeldungen) verarbeiten konnte, schien immer noch gut zu sein. Im Herbst 1985 war mein Chef, Ian Darwin, der Meinung, dass dies ein lohnendes Projekt sei, und so begann ich montags mit dem Schreiben (ebenfalls von Grund auf) dessen, was relaynews wurde, und hatte am Freitag (nach achtstündigen Arbeitstagen) ein kaum brauchbares relaynews, das Ian mit nach Hause nahm und auf seiner glänzenden neuen Dual Systems Unix System III 68000-Maschine ausprobierte.
Henry und ich tauschten uns häufig aus und erkannten ziemlich schnell, dass wir mit relaynews, das die History-Datei generiert, und den News-Lesern, die sich nicht groß um das Format einiger Felder scherten, die Möglichkeit hatten, das Format auf nützliche Weise zu erweitern, die wir für eine höhere Geschwindigkeit ausnutzen konnten. Ich glaube, es war ungefähr zu dieser Zeit, als wir den Namen "C News" annahmen und damit begannen, einen vollständigen Newstransport zu entwickeln. Wir hatten kein Interesse an Lesern, die sich ständig zu ändern schienen, und rn (und später nn) schien uns gut genug.
3. Wie haben Sie bei der Entwicklung von C News zusammengearbeitet?
Ich glaube, wir haben in `#ifdef Considered Harmful' etwas darüber gesprochen, aber vielleicht nicht im Detail. Wir teilten die Arbeit auf; ich nahm relaynews (den schwierigen Teil) und Henry die meisten anderen Befehle. Wir trugen beide zu einer kleinen Bibliothek mit gemeinsamen Routinen bei. Später interessierte sich Henry für die Paketierung und bereitete so die Veröffentlichungen vor. Während der Arbeit schrieben und aktualisierten wir Handbuchseiten für all das.
Wir arbeiteten getrennt, tauschten Post, Code und Handbuchseiten aus und aßen ein- oder zweimal pro Woche zu Abend. Gelegentlich schrieben wir längere Dokumente.
4. War die Entwicklung von C News ein offizielles Projekt oder eine persönliche Angelegenheit?
Abgesehen von dem oben erwähnten Segen meines damaligen Chefs, der ein persönliches Interesse an den Ergebnissen hatte, war C News eine rein persönliche Angelegenheit, während wir beide an der U of T waren. Wir hatten das Glück, keine sklaventreibenden Chefs zu haben, die uns ständig über die Schulter schauten, und ein Teil unserer Arbeit an C News war direkt auf unsere Jobs als Systemprogrammierer und -administratoren anwendbar, aber wir steckten auch ziemlich viel von unserer eigenen Zeit hinein.
Nachdem ich nach Boston gezogen war, um für Barry Shein bei Software Tool & Die zu arbeiten, wurde meine Arbeit mehr von konkreten Zielen geleitet als von dem Versuch, die ständig wachsende To-Do-Liste abzuarbeiten, aber ich war auch in der Lage, Vollzeit an C News zu arbeiten und machte viel schnellere Fortschritte, als es mir möglich gewesen war, als ich in meiner Freizeit daran arbeitete. Ich habe meine eigene To-Do-Liste für C News nie abgearbeitet, aber ich denke, alle wichtigen Dinge wurden erledigt.
5. Was waren Ihre größten technischen Herausforderungen bei der Entwicklung von C News?
Das Fehlen von dbm im System III/V war ein Ärgernis. Verschiedene andere Leute füllten die Lücke mit dbz, sdbm und dergleichen. Henry übernahm schließlich dbz, nachdem er es gründlich überarbeitet hatte.
Die grundlosen Inkompatibilitäten (z.B. df(1)-Ausgabe) innerhalb von System V, über verschiedene Versionen und Hersteller-Ports hinweg, waren ein weiteres Ärgernis. Dies war Teil des größeren Problems der fehlenden Standardisierung einiger recht grundlegender Dinge zwischen den Unixen vor POSIX.
Wir zogen in Erwägung, die Art von Relaynews mit mehreren Eingängen zu verwenden, wie es INN tut, aber die damit verbundenen Portabilitätsalpträume waren entmutigend. Außerdem fehlten den Unix-C-Bibliotheken einige Dinge wie fselect, eine Version von select, die die stdio-Pufferung berücksichtigt. Nicht, dass select wunderbar wäre, aber das Äquivalent mit kostengünstigen Prozessen, die sich den Speicher teilen (wie in Plan 9), war nicht möglich: Unix-Prozesse wurden immer dicker und die relevanten Systemaufrufe waren nicht nur noch nicht standardisiert, sondern einige von ihnen wurden noch nicht einmal für eine Standardisierung in Betracht gezogen.
Die Anpassung an den Umfang des UUNET-Nachrichtenbetriebs dauerte eine Weile und brachte den Batch-File-Exploder und einen viel schnelleren Newsgroup-Matcher hervor. Der Newsgruppenabgleich war für eine große gewöhnliche Usenet-Site mit vielleicht einem Dutzend ausgehender Feeds und mäßig komplexen Newsgruppenmustern in der sys-Datei akzeptabel schnell. UUNET hatte Hunderte oder Tausende von ausgehenden Feeds, und da diese an zahlende Kunden und nicht an Gleichgesinnte gingen, liefen die Newsgroup-Muster über Hunderte oder Tausende von Zeichen, um genau die Gruppen auszuwählen, die der Kunde an diesem Tag wollte. In dieser Situation nahm der Newsgruppenabgleich einen Großteil der CPU-Zeit in Anspruch. Barry Shein und ich haben ein Brainstorming durchgeführt und einen ziemlich guten Algorithmus und eine Implementierung gefunden, die nicht nur viel schneller ist, sondern auch eine bessere Zeitkomplexität aufweist.
8. Waren Sie nach C News an anderen Usenet-Entwicklungs- oder Wartungsprojekten beteiligt?
Nein, als ich meine Arbeit für Software Tool & Die beendete, war ich ziemlich ausgebrannt von Usenet-Software und -Inhalten.
9. Wo sind Sie derzeit beschäftigt? Was ist Ihre derzeitige Funktion? Woran arbeiten Sie derzeit?
Seit Juli 2006 bin ich wieder bei Bell Labs in Murray Hill als Mitglied des technischen Personals tätig (meine erste Anstellung dort war von 1994 bis 2001, zunächst für AT&T, dann für Lucent). Ich arbeite in einer Mischung aus Plan 9-Support, Entwicklung und Unterstützung bei Forschungsprojekten. Ich ersetze alte Plan 9-Maschinen durch neue Plan 9-Maschinen. Wir haben gerade zwei der alten optischen Jukeboxen ausgemustert, darunter auch die vom ursprünglichen Plan 9-Dateiserver, bootes.
10. Haben Sie historisch bedeutsame Dokumente oder Fotos im Zusammenhang mit dem Usenet, die Sie gerne mit anderen teilen möchten?
Keine Fotos. Ich habe Aktenschränke voller Papier, das mit Nachrichten zu tun hat, aber ich bin mir nicht sicher, ob irgendetwas davon für andere von Interesse wäre.