Watchman informiert über Dateiänderungen
Facebooks Werkzeug überwacht Dateien und Verzeichnisse, um festzstellen, wann sich etwas ändert. Darüber hinaus sollen sich damit Aktionen wie Builds als Folge von Änderungen auslösen lassen.
- Julia Schmidt
In einem Beitrag für die Facebook-Engineering-Gruppe hat Entwickler Wez Furlong das quelloffene Werkzeug Watchman vorgestellt. Das unter APL 2.0 stehende Tool soll Dateien überwachen und festhalten können, wenn sich etwas ändert. Außerdem soll Watchman in der Lage sein, Aktionen wie Builds anzustoßen oder Benachrichtigungen zu versenden, wenn sich bestimmte Dateien verändert haben.
Ziel der Entwicklung war laut Furlong die Beschleunigung des Build-Vorgangs, da bei einem Projekt wie Facebook viele Schritte notwendig sind, um vom PHP-Code zur funktionierenden Anwendung zu kommen und das Abarbeiten dieser Kette zu lang dauerte. Um die Zeit zu verkürzen wurde beschlossen, inkrementelle Builds durchzuführen, also nur die Änderungen einzubeziehen.
Darüber hinaus waren die Entwickler für andere Projekte auf der Suche nach einem Werkzeug, mit dem Änderungen im Dateisystem schnell erfasst und abgefragt werden konnten. Da die Eigenschaften der Werkzeuge, die so etwas bereits leisten, nicht mit ihren Vorstellungen übereinstimmten, entstand Watchman. Das Tool lässt sich von der Kommandozeile aus oder mit einem JSON-Protokoll bedienen und kann einen oder mehrere Verzeichnisbäume überwachen, wobei jeder einzelne Baum als Root bezeichnet und rekursiv betrachtet wird.
Informationen über die überwachten Roots lassen sich mit zwei Arten von Syntax, "Datei-Abfragen" und "Legacy Patterns", extrahieren, wobei letztere besser zum schnellen Abfragen via Kommandozeile geeignet sein soll. Datei-Abfragen eignen sich hingegen wohl besser kombiniert mit anderen Werkzeugen, da sie unter anderem als strukturierter und ausdrucksstärker beschrieben werden. Kommandos wie trigger bieten zusätzlich die Option, Aktionen auszulösen, sollten sich Dateien ändern, die einem vorher festgelegten Muster entsprechen.
Zwar hat das Tool noch Schwachstellen, beispielsweise werden Symlinks nicht unterstützt, und auch Furlong warnt davor, es als Wunderwaffe für schnelle Builds zu sehen, allerdings ließen sich wohl bei Facebook-eigenen Projekten Verbesserungen in puncto Geschwindigkeit beobachten (siehe Bekanntmachung). Watchman läuft unter Linux, OS X, FreeBSD und Solaris. Der Code steht auf GitHub zur Verfügung. (jul)