(Ich weiß, ich weiß… ich bin etwas spät dran, aber immerhin schreibe ich schon seit dem 26. Mai an dem Post!)

Am 27.06. fand, im Rahmen des Karlsruher WordPress Meetups, eine kleine 15 Jahr feier statt. Lucas Radke (der leider keine eigene Webseite besitzt) hat zu diesem Anlass, die WordPress Highlights der letzte 15 Jahre präsentiert. Ich fand die Idee ganz scharmant und habe die letzten Wochen mal recherchiert wie meine WordPress Geschichte seit 2002 aussieht.

2002

Fast genau ein Jahr (29.05.2002) vor dem WordPress Fork hab ich das erste b2/cafelog (der Vorgänger von WordPress) Weblog aufgesetzt.

pfefferle.org in 2003

Damals hab ich die Entscheidung volgendermaßen begründet:

Durch einen unglücklichen Zufall kam ich an 50 mb Webspace (mit PHP und MySQL Datenbank) und die Domäne jsjsjsj.de (lange Geschichte). Wegen goßem Ideenmangel, viel Webspace und nachdem ich schon etwas PHP gelernt hatte beschloß ich einfach mal testweise ein phpNuke zu installieren…

Nachdem der Webspace nach einem Jahr auslief, ich die jsjsjsj.de Domäne endlich wieder los war und erkannte das ein Content Management System etwas zu überdimensional für eine Privatperson sei, habe ich mir so meine Gedanken gemacht, wie die neue Seite aussehen solle.. Irgendwann kam ich zufällig auf die Seite webfroot.co.nz und war begeistert von der Weblog Idee.

2003

Anders, als ich bisher angenommen habe, bin ich nicht 2003 auf WordPress umgestiegen, sondern erst ein Jahr später. Nichts desto trotz hab ich mich intensiv mit dem neuen Projekt beschäftigt, immerhin war die Zukunft von b2 damals nicht wirklich klar!

My logging software hasn’t been updated for months, and the main developer has disappeared, and I can only hope that he’s okay.

What to do? Well, Textpattern looks like everything I could ever want, but it doesn’t look like it’s going to be licensed under something politically I could agree with. Fortunately, b2/cafelog is GPL, which means that I could use the existing codebase to create a fork, integrating all the cool stuff that Michel would be working on right now if only he was around. The work would never be lost, as if I fell of the face of the planet a year from now, whatever code I made would be free to the world, and if someone else wanted to pick it up they could. I’ve decided that this the course of action I’d like to go in, now all I need is a name. What should it do? Well, it would be nice to have the flexibility of MovableType, the parsing of TextPattern, the hackability of b2, and the ease of setup of Blogger. Someday, right?

Matt Mullenweg: The Blogging Software Dilemma

2004

WordPress installiert!

2005

2005 hab ich mir die Domain notizblog.org registriert um ein neues WordPress Blog aufzusetzen.

notizBlog.org gibt es seit Mitte 2005 und ist mein privater Blog. Angefangen hat alles mit einem Blog auf pfefferle.org, daraus hat sich das Ettlinger Weblog “MadLog” entwickelt, welches recht schnell zu nem Gemeinschafts-Blog oder sowas in der Art geworden ist. Da ich aber in dem Bereich Neue Medien bzw. Online Medien studiere, dachte ich es sei nicht schlecht ein eigenes Weblog zum Testen und Ausprobieren zu besitzen.


Außerdem wollte ich natürlich ein Teil vom Web2.0 sein 😀

2006

Mein erster Versuch ein Theme zu bauen!

Mehr fällt mir dazu nicht ein 😉

2006 hab ich außerdem mein WordPress.org Profil angelegt um 2007 dann auch mein erstes Plugin zu veröffentlichen.

2007

Mein erstes WordPress Plugin war Simple-CoComments. Es war/ist so „komplex“, dass man problemlos den kompletten Quellcode hier veröffentlichen könnte 🙂

Mein erstes großes Projekt in 2007 war aber das APML Plugin, worüber ich (das erste Mal) auch ein wenig Aufmerksamkeit in gleich zwei Communities bekam: WordPress & DataPortability.

2008

2008 hatte ich einfach nur total bock aufs bloggen. Im Durchschnitt kam ich auf 0,7 Artikel pro Tag, das sind derzeit 37% aller bisherigen Artikel!

2009

2009 entstand das ActivityStreams Plugin für WordPress, was dann auch der Start zu den diversen OStatus Plugins und meiner arbeit an dem OStatus Plugin war.

2010

Im Februar 2010 kam Pepijn auf mich zu, ob ich ihn nicht bei der Entwicklung eines OStatus Plugins für WordPress unterstützen wolle…

Are you pfefferle on WordPress.org?

Together with a few other individuals I'm working on a distributed social network plugin for WordPress.
I've been following the social-discuss mailing list for a while, and it seems to me that OStatus is considered a good candidate for a protocol.

According to this page, OStatus is basically a collection of extensions to Atom.
http://status.net/wiki/OStatus

Since you are the author of both an Activity Streams plugin an a Portable Contacts plugin -- among a few other interesting and probably related plugins -- I would like to inform you about our efforts.

Maybe we could share some code, or even join forces?

Groeten,
Pepijn de Vos

Die Arbeit am OStatus-Plugin hat bisher am meisten Spaß gemacht! Von allen Plugins, ist es das einzige, das ohne große Änderungen immer noch funktioniert. Gerade vor ein paar Monaten hab ich den ganzen OStatus-Plugin-Stack für Mastodon nochmal auf den neusten Stand gebracht 😍

2011

Durch die Arbeit an OStatus, habe ich auch viel am PubSubHubbub Plugin mitgeholfen. Mittlerweile habe ich das Plugin mehr oder weniger übernommen, bzw. bin ich aktuell der einzige aktive Maintainer.

Das Besondere an dem Plugin sind die 100.000 Installationen, die es zu einem der Top 100 Plugins auf WordPress.org machen!

2012

Mein erstes ernstzunehmendes Theme: SemPress!

I’ve made a WordPress Theme… kind of…

2013

Ein Jahr später hat es SemPress dann in das offizielle Theme Directory von WordPress.com geschafft!

SemPress auf WordPress.com

2014

2014 habe ich das OStatus Plugin geklont und einen ersten Prototypen eines IndieWeb Plugins veröffentlicht. Das IndieWeb Plugin ist bis heute eine Art Installer, der User bei der Installation und Einrichtung der verschiedenen IndieWeb-Plugins unterstützen soll. Mittlerweile ist die IndieWeb WordPress Community gut gewachsen und seit letztem Jahr ist das Plugin Teil des offiziellen IndieWeb-Repos, in der Hoffnung, dass es dort mehr Pflege bekommt.

2015

Meine erste „Core Contribution“. Für WordPress 4.4 habe ich Pascal Birchler bei der Entwicklung des WordPress oEmbed Providers geholfen.

New Embeds Feature in WordPress 4.4

2016

Mein erstes WordCamp und mein erster Vortrag auf einem solchen. Thema war das IndieWeb… Was auch sonst 😉

Soziale Netzwerke haben meistens nur eine begrenzte Lebenszeit. Posterous wurde von Twitter gekauft und eingestellt, Google Buzz durch Google Plus ersetzt und MySpace hat seine Blogging-Plattform geschlossen. Alleine mit Geocities wurden 2009 knapp 23 Millionen Seiten unwiderruflich vom Netz genommen. Jeder dieser Schritte ist mit einem Datenverlust verbunden. Die IndieWeb Bewegung versucht diesem Trend entgegen zu wirken. Inhalte werden nur noch auf der eigenen Seite veröffentlicht und erst dann über die Socialen Netzwerke geteilt. Aber nicht nur Artikel, sondern auch Bilder, Videos und Kommentare. WordPress bietet ideale Voraussetzungen um sich unabhängig von den sozialen Medien zu machen und dennoch dessen Vorteile und Reichweite zu nutzen. Welche Möglichkeiten gibt es aktuell, um Inhalte automatisch zu teilen oder Reaktionen im Netz einzusammeln und wie lässt sich mit WordPress eine Art dezentrales Social Network bauen.

2017

Ich bin großer Fan von Gutenberg, DEM neuen Editor von WordPress, und arbeite seit 2017 daran, mein aktuelles Theme ZenPress möglichst kompatibel zu machen.

2018

2018 war ich das erste mal auf einem WordPress-Meetup und bei meinem ersten Hackathon zum Thema WordPress.

Es hat spaß gemacht, die alten Sachen heraus zu kramen 🙂

Auf die nächsten 15 16 Jahre!

Ich durfte auf dem WordCamp Frankfurt etwas zum Thema IndieWordPress erzählen und seit ein paar Wochen kann man sich den Vortrag auch auf WordPress.tv anschauen. Der Ton ist am Anfang etwas schlecht, wird aber nach ca. 5 min besser! Für die Text-Bevorzuger… Im Vortrag geht es um folgendes:

Soziale Netzwerke haben meistens nur eine begrenzte Lebenszeit. Posterous wurde von Twitter gekauft und eingestellt, Google Buzz durch Google Plus ersetzt und MySpace hat seine Blogging-Plattform geschlossen. Alleine mit Geocities wurden 2009 knapp 23 Millionen Seiten unwiderruflich vom Netz genommen. Jeder dieser Schritte ist mit einem Datenverlust verbunden. Die IndieWeb Bewegung versucht diesem Trend entgegen zu wirken. Inhalte werden nur noch auf der eigenen Seite veröffentlicht und erst dann über die Socialen Netzwerke geteilt. Aber nicht nur Artikel, sondern auch Bilder, Videos und Kommentare. WordPress bietet ideale Voraussetzungen um sich unabhängig von den sozialen Medien zu machen und dennoch dessen Vorteile und Reichweite zu nutzen. Welche Möglichkeiten gibt es aktuell, um Inhalte automatisch zu teilen oder Reaktionen im Netz einzusammeln und wie lässt sich mit WordPress eine Art dezentrales Social Network bauen.

Nicole Lücking (photostroller) hat außerdem ganz tolle Scribbles zu dem Vortrag gemacht:

Eigentlich wollte ich ja nur einen Toolbox Fork erstellen und das Theme um Microdata/Schema.org erweitern und dann hat es doch so viel Spaß gemacht, dass ein eigenes Theme daraus wurde… Ich präsentiere euch SemPress, das hoch semantische HTML5 Theme mit ner Prise Responsiveness und SEO 🙂

Das Theme verschönert übrigens das notizBlog und ist aus folgenden Gründen großartig:

POSH – Plain Old Semantic HTML5

HTML5 Logo

SemPress basiert, wie schon erwähnt, auf Toolbox und die HTML5 Struktur wurde auch weitestgehend beibehalten. Ich habe lediglich einige Tags in (meiner Meinung nach) semantisch passendere getauscht. Im Detail:

  • Semantische Tags – Ich habe einfach mal geschaut welche Tags Toolbox noch nicht unterstützt und sie dann, hoffentlich richtig eingebaut :).
  • HTML5 Input-Types – SemPress unterstützt einige der neuen Input-Types wie z.B. "search", "email" und "url". Mehr dazu in einem älteren Artikel.

Websemantics

Eigentlich hab ich das ganze Projekt (wie schon erwähnt) ja nur gestartet, damit ich mal wieder was produktives mit Microformats machen und Schema.org lernen kann. Hier also der Semantic Overload:

  • Microformats – Toolbox selbst unterstütz Microformats ja schon von Haus aus und ich musste nur kleine hAtom fixes und die richtigen Profile Header setzen.
  • Microformats v2 – Ich bin zwar kein großer Fan von Microformats 2, aber ich wollte testen wie leicht sich das Theme um neues HTML-Classes erweitern lässt und wie viel Arbeit es bedeutet. SemPress unterstützt hCard 2 und hAtom 2.
  • Microdata/Schema.org – Ähnlich wie bei Microformats v2 wollte ich testen wie schwer es ist, Schema.org einzubauen. Das Theme unterstützt http://schema.org/Blog, http://schema.org/BlogPosting and http://schema.org/Person.

Was ich noch gerne einbauen will ist hMedia für alle möglichen Medieninhalte wie z.B. auch WordPress "Images" und "Galleries" und natürlich auch das Schema.org Pendant.

WordPress Features

Neben dem ganzen semantik Gedöns, hab ich natürlich auch ne Menge WordPress-Features eingebaut.

  • Post Thumbnails – SemPress unterstützt diverse Post-Thumbnail Größen (maximal 600px) und versucht sie bestmöglich darzustellen. Alle Bilder kleiner als 480px werden z.B. mit float right in den Text integriert.
  • Post Types – Im Gegensatz zu Toolbox unterstützt SemPress folgende Post-Types: "aside, status, gallery, video, audio, link, image" und fast alle haben auch ein individuelles Layout spendiert bekommen.
  • …außerdem: Localization, Sidebar-Widgets und die WordPress' Navigation Menu.

Mal schauen ob ich noch ein Custom-Header-Image mit rein nehmen werde…

CSS und Design

Zuerst sollte SemPress gar kein Design bekommen, aber man muss ja auch bei CSS und Fonts auf dem Laufenden bleiben! Ich mach das ja schließlich nicht zum Spaß sondern zur Fortbildung :). Da ich aber kein wirklich großer Designer bin, hab ich mir ne Menge Ideen und CSS bei folgenden großartigen Projekten ausgeliehen:

  • Das Basis-CSS hab' ich von Toolbox übernommen.
  • Die Tabellen, Buttons, Input-Felder, Code-Boxen habe ich mir bei Twitters Bootstrap gemopst.
  • Die Icons, die vor einigen Artikeln erscheinen (z.B. die vom Typ Video oder Audio) sind von von Font Awesome.
  • Danke auch an HTML5 Boilerplate für einige Ideen!

Ein paar weitere Kleinigkeiten (auf die ich auch bissle Stolz bin):

  • Man kann den bei dem <code />-Tag die Programmiersprache mir data-programming-language="PHP" setzen und es wird wie folgend angezeigt: <?php echo "Hallo Welt"; ?>
  • Das Theme kommt komplett ohne Bilder aus.

Responsive Design

Das Theme sollte eigentlich und hoffentlich auf jedem Gerät gut aussehen und unterstützt drei++ Breiten:

  • Volle Breite + Sidebar rechts
  • Volle Breite + Zweispaltige Sidebar am Ende der Seite
  • Variable Breite (die, für das Gerät beste Breite mit einem) + Einspaltige Sidebar am Ende der Seite.

Außerdem passt sich das Menü automatisch an die Größen an und das ganz ohne JavaScript! …beim Drop-Down Menü gibt es zwar noch keine Möglichkeit das Menü wieder zu schließen, aber wer will das schon 😉

Was jetzt noch?

Da mir das themen ne Menge Spaß gemacht hat werde ich wohl auch weiterhin fleißig an SemPress weiter basteln und es noch semantischer und WordPressiger machen. Falls ihr irgendwelche Fehler findet oder Dinge besser könnt wie ich… bitte helft mir und forkt SemPress!

HTML5 Logo

Dass HTML5 ein paar neue input-types definiert, habe ich durch die hcard-input-brainstorming so am Rande auf geschnappt, mir aber nichts weiter dabei gedacht… Durch Zufall bin ich heute aber über folgenden Tweet von Sylvia Egger gestoßen:

Just implemented native #HTML5 form validation on #wp comments form – it' quite simple & should be in #wp default theme

und habe bissle recherchiert… Mit den neuen Input-Types ist es doch tatsächlich möglich Input-Felder über den Browser validieren zu lassen… Ich bin begeistert! 🙂

Trägt man beispielsweise eine Nicht-Email-Adresse in folgendes Feld…

<input type="email" />

bekommt man…

Email Validation im Firefox

Schön wenn man sich noch über solche Kleinigkeiten freuen kann oder 😉

Lange rede kurzer Sinn: Da WordPress alle Formulare an zentraler Stelle definiert, ist es ziemlich einfach sie mit ein paar neuen Input-Types zu versehen. Mit dem folgenden Code wird das Kommentar-Formular mit den Typen "email" und "url" und das Suchformular mit dem Typ "search" (funktioniert nur in den WebKit-Browsern) erweitert:

Code-Update: Eric Eggert hat mich in den Kommentaren darauf hingewiesen, dass man mit <input required /> auch noch die Pflichtfelder validieren kann. Danke!

Code-Update 2: Dank maxe werden jetzt auch die WordPress Settings berücksichtigt (Comment author must fill out name and e-mail) und das "Comment"-Feld ist natürlich auch required

<?php
/*
Plugin Name: html5 input-types
Plugin URI: https://notiz.blog/
Description: Adds the new HTML5 input-types to WordPress' default forms
Version: 0.1
Author: pfefferle
Author URI: https://notiz.blog/
*/

add_filter("comment_form_default_fields", "change_comment_input_types");

function change_comment_input_types($fields) {
  if (get_option("require_name_email", false)) {
    $fields['author'] = preg_replace('/<input/', '<input required', $fields['author']);
    $fields['email'] = preg_replace('/"text"/', '"email" required', $fields['email']);
  } else {
    $fields['email'] = preg_replace('/"text"/', '"email"', $fields['email']);
  }

  $fields['url'] = preg_replace('/"text"/', '"url"', $fields['url']);

  return $fields;
}

add_filter("get_search_form", "change_search_form_input_types");

function change_search_form_input_types($form) {
  return preg_replace('/"text"/', '"search"', $form);
}

add_filter("comment_form_field_comment", "change_comment_field_input_types");

function change_comment_field_input_types($field) {
  return preg_replace('/<textarea/', '<textarea required', $field);
}
?>

Funktioniert als Plugin und in Child-Themes (einfach in die functions.php kopieren).

Danke auch an Marc Görtz der mich über Twitter reichlich mit Links zu dem Thema versorgt hat:

Testen könnt ihr das übrigens hier auf notiz.blog.