Andy Humes CSS-Paradigmenwechsel

Seit geraumer Zeit arbeiten ich viel bei Kunden vor Ort. Aktuell häufig bei einem Kunden am Hamburger Fischmarkt, Große Elbstraße, mit Aussicht auf die Elbe. Im Laufe des Vormittags tappere ich von meinem Büro im Belle-Viertel über die Schanze den Straßenzug Bernstorffstraße/Kleine Freiheit/Pepernmölenbek bis zur Elbe runter. Mitsamt Fußweg zum Büro und Nachhause-Weg kommen da täglich knapp anderthalb Stunden Wegstrecke zusammen. Folgerichtig habe ich meinen Podcastkreis erweitert, zum Beispiel um SWSX-Vorträge

Hafen

Gleich der erste Vortrag “CSS for Grown Ups: Maturing Best Practices” von Andy Hume erwies sich als Volltreffer. Audio (MP3, ca 58min), Slides (Speakerdeck)

Hume stellt natürlich gewachsene Paradigmen der Web Standards-Bewegung in Frage, insbesondere die bisher propagierte Trennung zwischen ausschließlich semantischen HTML-Markup und ihre Verdrahtung mit CSS.

Von dem Gedanken “das HTML-Markup hat keinerlei Informationen über das Design zu besitzen” geht Hume schnell weg und spricht vom Markup als eine Art “API” für die Gestaltung per CSS. Das Andocken von Gestaltung z.B. an einem H2-Element sei aber weder semantisch, noch flexibel. H2 kann z.B. innerhalb einer Website im Kontext “Homepage” eine Artikel-Headline darstellen, aber im Kontext “Artikel-Seite” die Subheadline des Artikels sein, während dann dort die Headline als H1 ausgezeichnet ist.

Für denjenigen der im CSS-Code rumwühlt, erschließt sich durch das reine Markup nicht, welche Bedeutung Elemente wie H1 oder H2 haben. Noch schlimmer: das CSS eskaliert und wird komplexer, weil es für unterschiedliche Kontexte unterschiedliche Elemente berücksichtigen muss:

#page-home H2,
#page-single H1 {
	font-size: 36px;
}

Wäre es aus CSS-zentrischer Sicht nicht semantischer, das CSS nicht an Elementen, sondern an Klassen anzuhängen?

<h1 class="headline">Suppenwürfel machen Krebs!</h1>

.headline {
	font-size: 36px;
}

Diese Parallel-Existenz von Semantik mit HTML-Element und Sematik mit CSS-Klassen war bislang verpönt und ein Bruch der klaren Trennung von Markup und Gestaltung.

Die Zeiten haben sich aber geändert. Wir reden nicht mehr von Firmen-Websites die sich in zehn HTML-Seiten abfrühstücken lassen, wie einst 2004, sondern von komplexen, datenbank-gesteuerten Sites und Applikationen, deren CSS-Code locker eine vierstellige Zahl von Zeilen umfasst.

Wird das CSS nicht dadurch flexibler und sogar semantischer wenn beschreibende Klassen verwendet werden wie

<a href="#" class="button button--large is-disabled">Remove</a>?

(Man beachte dass die “Beschreibung” hier ebenfalls semantischen Wert hat und nicht wie “button--100px” oder “button--green” aufgebaut ist!)

Es hebe derjenige die Hand, der noch nie eine beschreibende CSS-Klasse wie “button” verwendet hat…

Trotzdem: ich fand dies in dieser Konsequenz gewöhnungsbedürftig und bin schlichtweg an der Grenze der Überforderung, wenn Hume dann auch noch vorschlägt, HTML-Elemente über Javascript als Trigger für CSS-Klassen zu nehmen:

<div data-squery="min-width:400px=wide max-width:10em=small">

Hume hat dazu selector-queries geschrieben, die das obige Attribut “data-squery” auswerten: wenn der DIV-Container schmaler als 10em ist, bekommt er die Klasse small. Ist er breiter als 400px, bekommt er die Klasse wide. Ansonsten bleibt die Klasse leer (was nicht immer das Oberoberoptimalste als Fallback für Javascript-lose Clients ist).

Gefiel mir auf Anhieb nicht wirklich, aber je länger ich darüber nachdenke, ist dies für viele Websites vielleicht sogar der richtige Schritt um CSS-Module voneinander unabhängiger zu machen, denn Media-Queries in CSS arten quick in verschachtelten Spaghetti-Code aus und kommen in Sachen “Responsive Images” schnell am Ende ihres Lateins.

Ein zweiter zentraler Punkt des Vortrages von Hume ist die Strukturierung von CSS in möglichst unabhängigen Modulen: “Don’t style pages, style modules.

Ein Qualitätsmaßstab für Module ist ihre Unabhängigkeit von CSS-Code außerhalb des eigentlichen Module-CSS und ließe sich testen, indem man die Module in anderen Kontexten (Seitenleiste vs Content-Bereich) oder in der als Website angelegten Dokumentation ablegt.

Für den Workflow ist dies an zwei Punkten ein weitreichender Move. Es ist ab einem bestimmten Punkt das Verlassen der gewohnten “Top-Down”-Produktion einer Website und die komplette Abstraktion eines Moduls von ihrem zukünftigen Bestimmungsort.

Es ergibt sich daraus die interessante Frage der Dateiorganisation innerhalb eines Projektes. Auch hier ist CSS noch auf der Suche nach Best Practice. Hume schlägt drei Kategorien von Stylesheets vor, durch die eine Aufgabenteilung bewirkt wird, die die Übersichtlichkeit erhöhen soll und damit den Code pflegbarer machen soll – auch hinsichtlich des Recyclings von Modulen.

  • Base – Styles für Elemente, das Fundament der Website für site-weite Eigenschaften wie Link-Farben, Schriften, Schriftgrößen
  • Module – eigenständige Module wie “Einklinke”, “Link-Box”
  • Layout – Layout der Seite wie z.B. Spalten

Es gibt andere Versuche der Strukturierungen für CSS wie OOCSS, BEM oder SMACSS.

SMACSS definiert fünf Kategorien von Stylesheets:

  • Base – Stellt die Default-Gestalltung für HTML-Elemente, Attribute und Pseude-Classes dar.
  • Layout – Grober Seitenaufbau über die Ansprache von single-class- oder id-Selektoren.
  • Moduls – Wie bei Hume handelt es sich um wiederverwendbare Module wie Poduktlisten, die über classes angesprochen werden.
  • State – Beschreibt die Zustände von Layouts oder Modulen wie “enabled”, “hidden”, auch in Kontexten wie für Mobile-Clients etc…
  • Theme – Selbsterklärend.

Aktuell sitze ich an einer ähnlichen Struktur (SASS-basierend: Values – Mixins – Generic – Elements – Modules) – allerdings für eine hoffnungslos kleine Website und es fühlt sich nicht korrekt an für so eine kleine Website zwischen fünf unterschiedlichen SASS-Dateien zu springen.

Die Suche nach Best Practice wird auf Jahre nicht vorbei sein und bis dahin noch in viele Sackgassen gegangen werden, noch viel Overhead produziert und noch viele Kundenprojekte als Testlabor dienen.

Alles bleibt anders

Ich bin jetzt dreizehn Jahre selbständig und trotzdem scheint jedes Jahr weiterhin seine eigene Dynamik zu kennen. Vielleicht werde ich alt, aber die letzten 10-11 Monate waren nicht nur sehr anders, sondern auch sehr ermüdend.

Im letzten Sommer arbeitete ich zusätzlich für vier Monate bei einem Hamburger IT-Unternehmen fünfmal die Woche in einem nine-to-five-Job (besser: ten-to-five). Sehr interessante Monate, weil ich zum ersten Mal seit meiner Angestelltenzeit 1996, über einen längeren Zeitraum Tag für Tag in einem größeren Team arbeitete und dort neue Workflows kennenlernte, u.a. sehr streng durchgeführtes Scrum zum Projektmanagement.

Das kam on-the-top zu meiner normalen Tätigkeit als Selbständiger und mit allesaussersport dazu. 60 bis 80 Stunden-Wochen, inkl. Aufstehen um kurz vor Sechs und Arbeiten an Wochenenden waren die Regel.

Der Oktober war etwas zum Verschnaufen da, aber vom November bis Februar ging es weiter. Ein Projekt das ursprünglich bis Mitte Dezember gehen sollte, aber in der ersten Hälfte plötzlich mit soviel mehr Funktionalität aufgeladen wurde, dass die Deadline auf Anfang Februar gelegt wurde. Man versetze sich in meiner Lage: ich wankte durchaus erschöpft gen Jahresende doch statt endlich einige laue Monate in Aussicht zu bekommen, hatte ich plötzlich ein Projekt an den Hacken, dass ich nicht los wurde – und dessen Workflow aus technischen Gründen (Remote Server, proprietärer Tunnel-Client) enervierend waren. Aus Anfang Februar wurde wegen weiterer Features der letzte Februar-Tag. Auf der letzten Rille wurde das Projekt fertiggestellt.

Der Dezember, Januar und Februar waren für mich schlimme Monate. Der Akku war komplett leer. An den Wochenenden war ich antriebslos. Und an den Wochentagen stellte ich mir immer wieder die Sinnfrage. Einer der Projektleiter fragte mich später für ein anderes Projekt an: “Wir haben da nochwas in der Pipeline. Möchtest du HTML runterschrubben?

Ich weiß wie er es gemeint hatte, aber die Formulierung “HTML runterschrubben” war ein guter Ausdrucks des Dilemmas das ich seit Dezember fühlte.

Im Akkord arbeiten. Keine nachhaltigen Lösungen. Kein Nachdenken, kein Herumexperimentieren, kein Ausprobieren.

Und dies zu einem Zeitpunkt, an dem der HTML/CSS/Javascript-Bereich (vulgo: Frontend) einschneidende Änderungen erlebt und komplett im Fluss ist. An dem alle in der Frontend-Branche verzweifelt nach optimalen Workflows und Best Practice suchen.

Irgendwas passte nicht zwischen dem was ich wollte und brauchte, dem was mir für die Zukunft wichtig war und dem was ich als Aufträge bekam. Der Herunterschrubber-Dienstleister-Weg schien mir in die Sackgasse zu führen.

Im Dezember traf ich die Entscheidung 2012 aus der aktuellen Bürogemeinschaft auszuziehen und stattdessen in eigene Räumlichkeiten zu gehen. Außerdem versuche ich den Kunden nur noch drei Tage die Woche anzubieten.

Ich war jetzt 13 Jahre in Bürogemeinschaften. Zumindest in den letzten ca. sieben Jahre hat sich das so hoch gehaltene Wort “Synergieeffekte” sehr in Grenzen gehalten. Ich will nun in die andere Richtung gehen und mich in meinen Büro abschotten können, mehr in Richtung Labor, Ruhe und Konzentration gehen. Ich will ganz bewusst in meinen eigenen Saft schmoren.

In den nächsten sechs Wochen werde ich ausziehen. In den nächsten 10 Tagen werde ich mich für ein Büro entscheiden. Und danach hoffen ich auf mehr Ruhe. Im Leben und in der Arbeit.

Nick Denton über das Scheitern von Blog-Kommentaren

Ich habe so meine Probleme mit Nick Denton, den ich genauso unsympathisch wie einige seiner Gedanken brillant finde.

Nick Denton ist der Macher hinter Gawker Media, das Unternehmen das Blogs wie Lifehacker, Gizmodo, Gawker oder Deadspin unterhält. Denton propagierten Journalismus mit Wirkung genauso wie Gossip mit Veröffentlichung von Fotos mit Sportler-Genitalien.

Vor einem Monat stellte er sich bei der SWSX in Austin einem einstündigen Interview mit Anil Dash zum Thema The Failure of Comments das ich zum Nachhören ans Herz lege, da Denton sehr, sehr viele interessante Gedanken entwickelt, wie Web-Publikationen mit Kommentaren und Konversation im Internet umgehen sollten.

Wo Denton herkommt, zeigt seine Aussage aus den ersten Minuten des Interviews über die Motivation Gawker zu starten:

I was struck how the conversations you’d have with journalists after deadline were far more interesting than what would appear in the newspaper the next morning. It was the story behind the story, and we turned that into a business.

Wie kann man diese Art von Konversation in den Blogbeiträgen pflegen? Wie kann man die derzeit vorherrschende Kultur der negativen Kommentare, der beißenden, zynischen Beschimpfungen stoppen ohne gleichzeitig Diskurs und kontroverse Meinungen abzuwürgen?

Denton sieht Facebook-Kommentare sieht zwar als eine Möglichkeit für einige Websites an, aber er hält Anonymität der Kommentare für ein wichtiges Gut um an gute Inhalte zu kommen.

Als gescheitert sieht er Versuche der Gamification von Kommentare – auch bei Gawker – in dem zum Beispiel Sterne für Kommentatoren verteilt werden. Denton: “Wer will denn wirklich ‘Sternchen’ bekommen? Sind die guten Kommentar-Schreiber wirklich auf Sterne aus? Nein.

Die Hürden für “Kommentatoren-Erstlinge” sieht er noch als zu hoch: die Anmeldung und die Hemmschwelle vor der Partizipation.

Einen Weg den Gawker in den nächsten Wochen beschreiten will, ist die Übernahme der Verantwortung für die Kommentare durch die Kommentatoren selber. Nicht in Form eines generischen Bewertungsprozesses, der eine Eigendynamik lostritt, die sehr schnell nichts mehr mit den Inhalten zu tun hat. Sondern in Form von: jeder Kommentator wird Kurator für den Thread den er startet. Die Vision von Denton ist es, dass die Subjekte der Artikel selber die Hemmungen verlieren, in den Kommentaren einzusteigen.

Eine zweite interessante Vision von Nick Denton ist fractional commenting, dass die Kommentierung an spezielle Segmente des Blogeintrages koppelt – so wie bei Soundcloud auch bestimmte Passagen eines Musikstückes kommentiert werden können.

Nick Denton gehört zum Typus Arschloch, dem ich gerne zuhöre. “The Failure of Commenting”, SWSX 2012.