OpenLDAP 2.4.x und die ACL

OpenLDAP ACL

In vergangenen Blogposts habe ich erwähnt welche Möglichkeiten OpenLDAP 2.4.x bei der Replikation bietet und wie man neuerdings weitere Schema zu OpenLDAP hinzufügen kann.
Mit dem dynamischen Backend cn=config hat sich auch das bearbeiten der ACL (Access Control List) verändert.
Unter OpenLDAP < 2.4.x war die slapd.conf die richtige Anlaufstelle um Benutzern, Gruppen etc. den Zugriff auf bestimmte Attribute, Objekte, Teilbäume... zu ermöglichen.
cn=config als dynamisches Backend fordert hier eine neue Vorgehensweise um die ACL zu administrieren.

Generell gibt es zwei Möglichkeiten neue Zugriffsrechte zu definieren oder bestehende zu ändern.

  • Änderungen direkt in das entsprechende Backend-LDIF eintragen (olcDatabase={1}hdb oder olcDatabase={1}bdb).
  • Änderungen über ein separates LDIF File mit ldapadd oder ldapmodify zu importieren.

Wie bei allen Dingen die im Backend geändert werden gilt auch hier, alle Änderungen werden während der Laufzeit übernommen und erfordern keinen Reload des OpenLDAP Daemons.

Nun aber ans Eingemachte…

Bevor wir eine Access Control List aufbauen können, müssen wir wissen wie die Definition auszusehen hat und welche Möglichkeiten der Definition es gibt.
Die Definition einer ACL hat sich zu älteren OpenLDAP Versionen nicht groß geändert und immer den Folgenden grundlegenden Aufbau:

olcAccess: {n} to "what" by "who" "access"

Was in vollendeter Form z.B. so aussehen kann:

olcAccess: {2}to dn.subtree="ou=company,dc=netways,dc=org" by group.exact="cn=admins,ou=users,dc=netways,dc=org" write by * read by anonymous none

Das Beispiel ermöglicht den Mitgliedern der Gruppe “admins” Schreibrechte auf den Inhalt der Organisationseinheit “company”. Andere Benutzer haben Leserechte und Anonyme haben keinerlei Rechte.
Die {2} definiert die Reihenfolge der Verarbeitung. Die Access Control List wird von oben nach unten abgearbeitet. Regeln mit {1} greifen vor Regeln mit {2}, {3} etc… und werden auch so angewendet.
Eine Standardregel, die meist sehr weit oben in der ACL angesiedelt ist, lautet:

{1}to * by self write by dn="cn=admin,dc=netways,dc=org" write by * read

Diese Regel verhindert meist das folgende Regeln überhaupt Wirkungsvoll sind. Die Regel sagt aus das Überall der Benutzer “admin” Schreibrechte hat und jeder andere Benutzer Leserechte hat (und Benutzer auf die eigenen Objekte Schreibrechte haben). Ist diese Regel weit oben in der ACL angesiedelt haben die darauf folgenden Regeln meist keine Wirkung, daher empfiehlt es sich hier die Reihenfolge anzupassen.

Eine sehr detaillierte Anleitung über die Möglichkeiten der Definitionen gibt hier die OpenLDAP 2.4 Dokumentation: http://www.openldap.org/doc/admin24/access-control.html

Die Dokumentation entält, meiner Meinung nach, eine sehr gute und verständliche Beschreibung der “what” Definition:
0: o=suffix
1: cn=Manager,o=suffix
2: ou=people,o=suffix
3: uid=kdz,ou=people,o=suffix
4: cn=addresses,uid=kdz,ou=people,o=suffix
5: uid=hyc,ou=people,o=suffix

dn.base=”ou=people,o=suffix” trifft 2
dn.one=”ou=people,o=suffix” trifft 3 und 5
dn.subtree=”ou=people,o=suffix” trifft 2, 3, 4 und 5
dn.children=”ou=people,o=suffix” trifft 3, 4 und 5

Welche unterschiedlichen Möglichkeiten der “what” “who” und “access” Definition man hat beschreibt das Schaubild unter “8.2. Access Control via Static Configuration”.

Bisschen was aus der Praxis…

Damit dieser Blogpost nicht allzu theoretisch wird ein paar Code snippets die das Thema ACL ggf. etwas leichter machen.

Definitionen zur ACL hinzfügen:

changetype: add
add: olcAccess
olcAccess: to dn.subtree="ou=company,dc=netways,dc=org" by group.exact="cn=admins,ou=users,dc=netways,dc=org" write by * read

Neue Definitionen werden in der Liste ganz am Ende aufgeführt und bekommen immer die höchste Listenzahl {}

Definition in der ACL ändern:

changetype: modify
delete: olcAccess
olcAccess: to dn.children="ou=contacts,dc=netways,dc=org" by * search
-
add: olcAccess
olcAccess: to dn.children="ou=contacts,dc=netways,dc=org" by * write
-

Definitionen abändern erfordert ein “delete: olcAccess” und ein “add: olcAccess”. Die “-” sind im LDIF wichtig.

Definition an bestimmter Stelle in ACL ändern:

changetype modify
delete: olcAccess
olcAccess: {1}
-
add: olcAccess
olcAccess: {1}to dn.children="ou=contacts,dc=netways,dc=org" by * write
-

Hier wird der Inhalt von {1} mit dem neuen überschrieben.

Noch was Gutes zum Schluß…

Das Backend cn=config kann mit der Zeit sehr groß und sehr komplex werden.
Insbesondere dann wenn die ACL sehr groß geworden ist.
Zur Administration des Backends ist es daher Empfehlenswert auf einen gut strukturieren und übersichtlichen LDAP Browser / Editor zurück zu greifen.
Ich verwende sehr gerne Apache Directory Studio oder unter Windows LDAPAdmin.
Eine Verbindung zur cn=config erfolgt über den administrativen Backendbenutzer (meist cn=Manager,cn=config oder cn=admin,cn=config) und über die BaseDN cn=config.

PNGs mit node.js

logo PNGs mit node.js

Wer den letzten Blogpost gelesen hat und sich auch fragt, was node.js ist, dem (und natürlich auch allen anderen icon wink PNGs mit node.js ) möchte ich eine kurze Einführung geben.
Mit JavaScript und HTML kann man viele tolle Sachen machen – zum Beispiel Zeichnen im Canvas-Element. Ohne Browser und eine Person, die diesen bedient, sieht man relativ wenig. Für Reports beispielsweise, steht außer Frage, dass Bildgenerierung automatisiert ablaufen muss.
Mit Node.js, einem serverseitigem JavaScript-Framework zum Erstellen von Server- und Konsolenanwendungen, kann nicht nur diese Aufgabe bewältigt werden.

Auf dem Vormarsch
Node.js ist mittlerweile 2 Jahre “alt” – Updates, zumindest in der Unstable-Linie, erscheinen regelmäßig. Sogar Microsoft beteiligt sich an der Entwicklung. Die Zahlen von GitHub und deren Mailing List lassen erkennen, dass sich node.js an einer wachsenden Community und reger Entwicklung erfreut.

Die letzte Stabile Version (0.6, November 2011) hat leider noch keinen Einzug in die Repositories der bekannten Linux-Distributionen gefunden. Die aktuelle Version für Fedora und Enterprise-Distributionen kann hier bezogen werden. Für Debian und Ubuntu ist dieses PPA zu empfehlen.

Auch wir setzen auf node.js, zum Beispiel bei inGraph.

Unter der Haube
Basis von node.js ist die schnelle JavaScript-Engine V8 von Google, die den JavaScript-Code vor dem Ausführen in Maschinencode übersetzt.
Modular erweiterbar und mit schlankem Kern, kommt es ohne weitere externe Abhängigkeiten aus – nur Python >= 2.5 wird benötigt.

Besonderheit von node.js ist die ereignisgesteuerte Architektur. Standardmäßig blockieren Ein- und Ausgabeoperationen (zum Beispiel Datenbankzugriffe) den Programmablauf. Im Gegensatz zur herkömmlichen Methode (Threading) und dem damit verbundenen Umgang mit Thread-Sicherheit (Locking, Race Conditions), setzt es auf “non-blocking I/O”.
Das heißt, dass alle Funktionen, die in anderen Umgebungen blockieren würden, Rückruffunktionen (Callback) als Parameter erwarten, die erst dann aufgerufen werden, wenn die Operation im Hintergrund ausgeführt wurde.

Los geht’s
Die Installation gestaltet sich recht einfach

# wget http://nodejs.org/dist/v0.6.8/node-v0.6.8.tar.gz
# tar xzf node-v0.6.8.tar.gz
# cd node-v0.6.8
# ./configure
# make
# make install

Neben node, wurde auch der Node Package Manager installiert. Den benutzen wir, um das benötigte Modul node-canvas zu installieren

# npm install node-canvas

Ein Rechteck
Folgender Code zeigt beispielhaft die Benutzung des Core-Moduls fs und des kürzlich installierten canvas


var Canvas = require('canvas'),
    canvas = new Canvas(150, 150),
    ctx = canvas.getContext('2d'),
    fs = require('fs'); // File I/O

ctx.fillStyle = '#00F';
ctx.fillRect(0, 0, 150, 150);

var out = fs.createWriteStream(__dirname + '/rectangle.png'),
    stream = canvas.createPNGStream();

stream.on('data', function(data){
  out.write(data);
});

Rufen wir das Skript nun mit dem node-Binary auf, so erstellt es uns ein blaues Rechteck mit dem Namen rectangle.png

# node png.js

Weitere Informationen findet man auf der Website der Entwickler.

Beliebte Software-Entwickler-Werkzeuge bei Startup-Unternehmen

statistik 150x150 Beliebte Software Entwickler Werkzeuge bei Startup UnternehmenUrsprünglich fand ich diese Umfrage vom Thema her interessant und einen kurzen Blick wert. Mehr wollte ich gar nicht schreiben. Eigentlich.

Wir liegen „voll im Trend“
Allerdings war ich bislang der Ansicht, hier bei netways einem Alternativ-Open-Source-Underground-Software-Usage-Unternehmen zu dienen (mit 1337 – |-|4><><0r-Ansätzen was Pizzabestellungen betrifft). Nun muss ich mein Weltbild nolens volens korrigieren – die Ergebnisse entlarven schonungslos unseren Hang zum Mainstream: Mysql, Selenium IDE, Netbeans, Redmine, Vim, Git … puh.

Ich empfehle mich
Unsinn mal beiseite geschoben, ist es doch spannend, was andere Leute in der Branche einsetzen und schaden kann es nicht, das ein oder andere Tool für sich zu entdecken. Den Gedanken greifen die Statistiker dann auch brav auf und schlagen sechs „Hidden gems and trending apps“ vor, die man unbedingt probieren muss. Warum auch immer.

  • Nun spricht nichts per se dagegen, New Relic vorzuschlagen. Ich habe es bislang nicht ausprobiert, es sieht viel schmucker aus als etwa pinba oder xymon und bietet, wenn ich es korrekt erfasst habe, umfangreichere Funktionen. Vielleicht hätte man das erwähnen können. Und dass es etwas (und was) es kostet (ausgenommen es stellt einem etwa ein Hoster zur Verfügung).
  • Ähnlich verhält es sich mit dem Texteditor Sublime Text, den man bei regelmäßiger Nutzung (so zu lesen auf der Homepage) bezahlen sollte, aber immerhin kann man „mächtiger als Textmate und einfacher zu bedienen als vim oder Emacs“ als wertende Aussage zählen lassen.
  • Ist GitX (L) tatsächlich ein Geheimtipp für Mac-User? Kann ich nicht beurteilen. „Great“ und „GUI“ lässt zumindest vollkommen offen, warum man gerade die L-Variante wählen sollte.
  • workflowy 150x150 Beliebte Software Entwickler Werkzeuge bei Startup UnternehmenA lightweight way to make useful lists“ beschreibt WorkFlowy schon beinahe ausreichend. Zusätzlich kann man die Listen freigeben. Aber entweder ist man dort bestrebt, das Gros der Funktionen vor mir geheim zu halten. Oder „Project -“, „Task-Managing“ und vor allem „Bug tracking“ sind schon verdammt „lightweight“. „Create shopping lists for your smart-phone online“ wenn man böswillig ist.
  • Zu guter Letzt (ja, nix zu node.js, bin zu faul und unwissend) – ein Sony-Kopfhörer? „Bad boys“, die den labernden Chef ausblenden? Anarchisch. Und innovativ. Absoluter Geheimtipp für Entwickler. Warum gerade dieses Modell? Etwa aufgrund der geschlossenen Bauart mit guter Außendämpfung, den zig ordentlichen Bewertungen durch diverse Fachmagazine, oder persönlichem Geschmack des Schreiberlings? Man weiß es nicht. Eventuell hat die Dispo gerade Sony an Land gezogen. Falls ja: sehr galant eingeflochten, die Werbung. Respekt.

Hübsch sinnfrei
Käme man nun auf die Idee, noch die „Schlussfolgerungen“ aus den Zahlen zu studieren, würde man obendrein durch bessere Kalendersprüche belästigt. Ich spare mir an dieser Stelle, diese Ergüsse aufzudröseln.

Ich konstatiere: Thematisch und optisch ansprechende Statistik wie aus dem Bilderbuch, bestens geeignet für unterschwelliges Product-Placement. Egal. Ich für meinen Teil empfinde jedenfalls 55,8% der Farben als angenehm (Flächenbedeckung, anteilig) – zumindest für ein Diagramm. Gesetzt den Fall, man sähe die graue Schraffur als unifarben an, was 33,3% der hier momentan Anwesenden in durchschnittlich 173,8% größerer oder gleicher Entfernung vor dem Monitor sitzend, als der durchschnittliche Golf-GTI-Fahrer mit Kappe nach hinten (66,9% der männlichen Umfrage-Aspiranten) am Duftbaum (89,3% der befragten Rückspiegel, Vanille-Cocos) vorbei schielt (also die 34,7% mit Hornhautdeformation, Brillenkorrekturfähig) am besten gelingt.

Exchange 2010 SP2 IndexOutOfRangeException

Nachdem ich SP2 auf dem Exchange installiert habe, konnten sich unsere MacUser mit ihrem Apple Mail Programm nicht mehr auf die Exchange Datenbank verbinden.

Folgenden Fehler habe ich dazu im Eventlog gefunden:

Application information:
    Application domain: /LM/W3SVC/1/ROOT/EWS-2-129677608322282356
    Trust level: Full
    Application Virtual Path: /EWS
    Application Path: C:\Program Files\Microsoft\Exchange Server\V14\ClientAccess\exchweb\EWS\
    Machine name: <Servername>

 Process information:
    Process ID: 6724
    Process name: w3wp.exe
    Account name: NT AUTHORITY\SYSTEM

 Exception information:
    Exception type: IndexOutOfRangeException
    Exception message: Index was outside the bounds of the array.

Das Problem konnte gelöst werden, in dem ich im Datenbank Namen die „(„ und „)“ entfernt habe.

Vorher: „Postfachspeicher (SERVERNAME)“
Nachher:”Postfachspeicher SERVERNAME“.

Danach noch den Dienst Microsoft Exchange-Einschränkungen (Microsoft Exchange Throttling) neu starten.

Sollte die Anmeldung  immer noch nicht Möglich sein, dann sollte man kontrollieren ob
im EWS die Standardauthentifizierung aktiviert ist, da die Windows-Authentifizierung mit dem MAC Client nicht funktioniert.

Weekly Snap: From Open Shot to Mac tips, Cloud, Clang and CeBIT

camera Weekly Snap: From Open Shot to Mac tips, Cloud, Clang and CeBIT16 – 20 January was packed with tips, customer news and events as well as the odd buzzword and prank call.

Markus shared his two favourite, open source video editors – OpenShot and Kdenlive while Gunnar gave the thumbs up to Clang, the C++ compiler, for static code analysis.

Following on, Angsar admired Google Docs and Tobias took a lighthearted look at the hottest IT buzzwords around the office.

Julian then explained how to create a new admin account on a Mac in 5 easy steps and Pamela announced our attendance at CeBIT on 6 – 10 March, in the Open Source Park, with free tickets to boot.

Bernd brought big news that our longstanding customer Tradoria will soon be known as Rakuten, after a successful takeover by the Japanese ecommerce giant. He also shared the latest prank call he received from a so-called Mathildenberg Foundation offering a year’s supply of olive oil.

Twitter Weekly Updates for 2012-01-22

Mathildenberg-Stiftung für Olivenöl

Gestern Nachmittag hat uns ein Anruf der “Mathildenberg-Stiftung” aus München erreicht. Ich würde an dieser Stelle gerne auf die Seite der Stiftung verlinken aber dazu später mehr. Da wir einige Projekte unterstützen ist ein Anruf und die Nachfrage erstmal ja nicht ungewöhnlich und daher versuchen wir uns die “Story” zumindest mal anzuhören.

Aber nun zum Anrufprotokoll:

############################# schnipp ###########################

Anrufer: Meine Name ist <NAME> von der Mathildenberg-Stiftung aus München und wir engagieren uns im sozialen Bereich.

Ich: Schön, was können wir denn für sie tun?

Anrufer: Wir haben von einer Firma 80.000 Flaschen Olivenöl als Spende bekommen mit denen wir in unserer Stiftung nicht viel anfangen können.

Ich: Glückwunsch, soll ich Ihnen Tipps für die Verwendung von Olivenöl geben?

Anrufer: Nein, wir bieten Ihnen die einmalige Gelegenheit sich zum Betrag von xxx,xx eine Jahresration Olivenöl zu sichern und wir verwenden dann das Geld für unsere Stiftung.

Ich: Aha, ich brauche aber leider kein Öl. Haben Sie eine Internet-Seite, denn ich kann keine Seite bei Google finden?

Anrufer: Sollten wir schon haben, vielleicht ist die gerade offline.

Ich: Im Stiftungsregister (gibt es eigentlich nicht) kann ich sie auch nicht finden und auf der Website der Stadt München sind sie auch nicht gelistet.

Anrufer: Wollen sie jetzt Öl?

Ich: Nein, Aloha!

############################# schnapp ###########################

Das ganze als Post niederzuschreiben mache ich aus zwei Gründen:

  1. Vielleicht werden in den nächsten Tage ja noch andere vom Zentralvertrieb der Olivenölbranche angerufen und können so bei Google gleich etwas dazu finden. Die Antworten können gerne im eigenen Gespräch verwendet werden.
  2. Sollte es die Mathildenberg-Stiftung doch geben und davon gehe ich nach Recherche wirklich nicht aus, empfehlen wir dringend folgendes zu beherzigen:
    • Überdenkt eure Sammelstrategie
    • Legt euch einen Webauftritt zuzulegen (wir machen ja Hosting icon smile Mathildenberg Stiftung für Olivenöl )
    • Ruft nochmal bei uns an. Ich nehme eine Flasche Öl!

IT-Buzzword Bingo – Begriffe für den Alltag

Ich habe mir heute zur Aufgabe gemacht euch nicht irgendwelche hoch-technischen IT-Themen näher zu bringen, sondern euch mit ein paar IT-Buzzwords für den täglichen Alltag in einer IT-Firma zu versorgen. Ihr wisst ja… Gut ge-buzzworded ist halb gewonnen icon wink IT Buzzword Bingo   Begriffe für den Alltag

Cloud
Zu aller Anfang gleich das Allheilmittel. Die Cloud! Egal ob beim Frühstück, während einer Besprechung, im Gespräch mit den Kollegen oder mit dem Chef. Die Cloud ist allmächtig und jeder fährt darauf ab. Cloud-Frühstücks-Semmeln, Cloud-Besprechunsräume, Cloud-Beamer oder das lästern über Kollegen an der Cloud-Kaffeemaschine. Mit einer Cloud beeindruckt man, den sie ist quasi “State of the Art” icon biggrin IT Buzzword Bingo   Begriffe für den Alltag

Synergien
Synergien sind in der IT-Branche Himmel und Hölle zugleich. Daher müsst ihr genau darauf achten was man euch mit diesem Begriff unterjubeln möchten. Eine gute Synergie wie z. B. “der Azubi holt jetzt für alle Abteilungen das Mittagessen” unterschiedet sich im Detail deutlich von “ob Windows, Solaris oder dieses Linux, das sind doch alles nur Betriebssysteme”, also der bösen Synergie.

Knowledge Base
Eine Knowledge Base ist eine ganz feine Sache. Egal in welcher Qualität ihr euer IT-Wissen dort verewigt oder ob ihr einfach schon immer eine tolle Plattform für eure Kochrezepte und euren Einkaufszettel gesucht habt. In der Knowlege Base seid ihr genau richtig.

Prozesse
Kaum habt ihr in der Firma die Chefetage in die Cloud gesteckt und endlich die Cloud-Besprechungsräume etabliert und damit Synergien geschaffen, muss dafür natürlich ein Prozess her. Was sonst. Beim “Prozess-Design” sollte man besonders auf die Komplexität des Ablaufs achten. Der Prozess sollte eine Gesamtanzahl von 30 Schritten nicht überschreiten, da Ihr den ganzen Kram ja in der Knowledgebase niederschreiben und pflegen müsst.

Task Force
Sollte sich die Chefetage gegen eure Erwartung nicht ohne weiteres in die Cloud migrieren lassen (logisch – man könnte Sie sonst einfach bei Bedarf ein- und ausschalten), müsst ihr sie mit ihren eigenen Waffen schlagen. Hierzu gibt es eine “Task Force”. Eine Task Force wird von der Chefetage quasi als GSG9 oder Navy Seals der IT-Branche betrachtet, wobei man der Task Force ein wenig mehr Beachtung schenkt als dem normalen Mitarbeiter. Aus Sicht des IT-Mitarbeiters zweifelt man ab und zu am Wissensstand der dort tätigen Kollegen.

Best Practices
Da ich euch nun meine 5 Best Practices in Sachen IT-Buzzwords beigebracht habe, ist es genug des Schwachsinns für heute. Ich wünsche euch ein schönes Wochenende!

Goodbye bis zum nächsten “FollowUp”.

Google Docs: Geteiltes, light

google-docs-logo

Derzeit bastel’ ich an einer Inventarisierung sowie Testfällen für Icinga-Web. Das entsprechende Tabellendokument platzierte ich diese Woche bei Google Docs. Zum einen ließen sich so die bisherigen Ergebnisse mit Kollegen besprechen, ohne die Tabellen ausdrucken oder mit Beamer an die Wand werfen zu müssen. Zum anderen dienen die Unterlagen zukünftig den Entwickler als Ressource, die sie dann (hoffentlich) erweitern, korrigieren und verändern. Die üblichen Austauschwege, etwa als Wiki-Text oder Download, gestalten sich da deutlich unpraktischer.

Funktioniert, einfach
Anscheinend bin ich hinsichtlich Distributed Collaborative Editing (Bulls**t-Bingo ahoi – vollkommen Wurschd, ob der Begriff hier passt icon wink Google Docs: Geteiltes, light ) nicht auf dem Laufenden, sind doch die gesammelten Erkenntnisse bislang fast durchweg positiv.

Die Freigabe über die Angabe der E-Mail-Adressen verlief ohne Komplikationen, ebenso der gemeinsame Zugriff per Browser. Die Besprechung entpuppte sich ob der verwendeten Plattform als latent amüsant, als mehrere farbige Kästchen über den Monitor wuselten, die – ungeachtet meiner Aktionen – munter ihre Spuren, also Texte, Einträge etc. hinterließen oder die Aufmerksamkeit auf diskussionswürdige Zellen lenkten. Soweit war die Operation quasi ein voller Erfolg. Was den Erfolg bezüglich des zweiten Ziels – also der gemeinsamen Bearbeitung der Informationen – angeht, bleiben die künftigen Erfahrungen abzuwarten.

Vergangenheitsbewältigung
Mit Grausen erinnere ich mich an frühere „Experimente“: freigegebene Excel-Dokumente etwa, extra auf dem Server abgelegt, die dann fälschlicher Weise doch noch als gesperrt galten und die ohnehin jeweils nur ein Benutzer zur gleichen Zeit bearbeiten konnte – über das lokale Netzwerk, versteht sich.

Als absolut sensationell daneben, da explizit darauf ausgerichtet, möchte ich dann die „Gruppenarbeit“ mit dem (frühen) InCopy/InDesign-Konglomerat anführen: Mit seiner Polaroid-Performance (Klicken. Eine Minute ungeduldig warten. Als dann ein Bild erscheint schließlich, die Erkenntnis: es ist nichts geworden.) strapazierte es nicht Server, Netzwerk und Arbeitsrechner, sondern auch die Nerven der Tippsen nebst Layoutern.
Die waren eigentlich schon mit dem umständlichen CheckIn/CheckOut-Freigabesystem und Textverkettungen („Wir machen einen Text daraus, dann läuft es schneller“) diversen Bugs („Moment – das Dokument sieht bei mir ganz anders aus“ – „Das kann nicht sein. Dann wäre es ja kaputt …“), sowie dem kastrierten InCopy-Client („Ich kann die Bildunterschrift nicht ändern, die ist nicht exportiert. Dazu brauchen wir einen Layouter.“ oder „Es steht Text über, aber ich kann ihn nicht sehen“ – „Normal. Das ist ein Feature.“) gestraft genug.

Fast wie ein Großer
Zurück zu Google Docs: Meine Wahl basierte letztlich vor allem auf dem einfachen „Verteilter-Zugriff“-Aspekt. Meine (kurzen) Impressionen bezüglich Handhabung der Web-Tabellenkalkulation will ich nicht unter den Tisch fallen lassen: So ließ sich sich das Dokument problemlos importieren (diverse Dateiformen lassen sich ins Google-Docs-Format wandeln), wobei es hier Größenbeschränkungen gibt, die im konkreten Fall bei weitem nicht erreicht werden. Formatierung, Inhalte, Tabellenblätter etc. wurden fehlerfrei übernommen.

Auch handelt es sich bei der Tabellenkalkulation um eine „erwachsene“ Anwendung. Zumindest gängige Funktionen, Autokorrektur, Formatierungen, Sperren etc. gehören zum Funktionsumfang. Zugegebener maßen liegt hier ein einfach gehaltenes, wenig umfangreiches Dokument zugrunde, entsprechend niedrig rangieren die Anforderungen.

Defizite zeigen sich, wenn die Bearbeitung beziehungsweise Anzeige trotz schneller Internetanbindung gelegentlich ins Stocken gerät oder an (eher) Kleinigkeiten wie deplatzierten Markierungen von Zellen oder nicht funktionierende Tastenkombinationen.

Alternativer Einsatz
Es ist natürlich jedem selbst überlassen, in wie weit er bereit ist, seine Daten und Dokumente einem Anbieter auszuhändigen. Allerdings möchte ich hier eine Verwendungsmöglichkeit ansprechen: als Alternative zu Blog-Software oder gar „dicken“ CMS-Systemen, im Rahmen von kleinen Internetseiten und unkritischen Daten.

Hier lassen sich diverse Google-API’s, Gadgets etc. einbauen, sodass mehrere Leute ohne viel Aufhebens (Einarbeitung, Umstellung der statischen Seite) die Möglichkeit bekommen, Texte etwa als News zu verfassen oder Termine anzulegen – und zwar per Browser in einer gewohnten, simplen Textverarbeitung beziehungsweise einem Terminplaner. Hier mal ein Beispiel mit eingebundenen Google Docs und Calendar.