Onboarding - webEdition Core-Entwickler

Du hast Interesse am webEdition Code mitzuwirken? Wir freuen uns.

 

Entwicklungs-Themengebiete

Wir unterscheiden grundsätzlich diese Bereiche bei der Entwicklung:

  • Texte
    Für die in webEdition dargestellten Texte und Labels gibt es einen Editor für Übersetzungen im Backend.
  • Backend
    Hier wird verwendet: PHP, SQL,JS, (S)CSS
  • Frontend
    Hier wird verwendet: PHP, JS, (S)CSS
  • Layout
    Hier dreht es sich in erster Linie um (S)CSS (sass)
  • Tags
    Die webEdition eigenen Tags sind in PHP geschrieben

 

Arbeitsumgebung

Um an webEdition arbeiten zu können, bedarf es einer entsprechenden Arbeitsumgebung. Nachfolgend findet ihr die bei uns eingesetzten Tools und/oder Empfehlungen, teilweise mit weiterführender Erläuterung.

Versionsprotokoll Mercurial (hg)

Wir setzen Mercurial (hg) als Versionsprotokoll ein. Wer es noch nicht kennt - die Kommandos funktionieren wie bei svn.
Ein großer Vorteil ist hier, dass auch Checkins gemacht werden können, wenn der Server mal nicht erreichbar ist.

Wir haben derzeit drei Branches:

  • Old (aktuell 8.1.x)
  • Default (9.1.x) für Bug-Fixes
  • Devel (9.2.0)

Wie daran vielleicht bereits erkennbar ist, wir nutzen bewusst Branches derzeit bis auf die genannten nicht. Branches werden, wenn benötigt, nur lokal eingesetzt. 
Feature Taggings (Tags) verwenden wir nur für Versionen.
Ein Push sollte zuvor getestet sein (phan). Natürlich ist hierfür ein Schreibzugriff erforderlich.

IDE / Entwicklungsumgebung

Für eine sinnvoll durchführbare Core-Entwicklung braucht es natürlich eine Entwicklungsumgebung wie netbeans, phpstorm, ...
Empfehlen können wir netbeans - hier können auch für Neueinsteiger Tipps gegeben werden.

"Spiel"-Server / Webspace

Ob lokal oder remote. Eine webEdition Installation mit einer Beispiel-Website - Templates und Seiten, ... ist natürlich ebenfalls essentiell. Damit man direkt testen kann.
Idealerweise mit direkter Upload-Möglichkeit über SSH oder (S)FTP.

Jabber-Client

Das hat nicht unmittelbar etwas mit der Core-Entwicklung zu tun. Wir nutzen Jabber als direkte Kommunikations-Möglichkeit zwischen den Entwicklern. Dies ist viel effizienter und auch schöner als Email, wenn man sich schnell mal austauschen will.
Es bedarf also einen Client, wie zum Beispiel Pidgin.

Wir haben hier eine Allgemeine Gruppe (Raum) angelegt, in der die Entwickler sich tummeln:
webedition@conference.jabber.ccc.de

Wer Wert auf Verschlüsselung legt, kann sich pidgin-encryption, OTR anschauen.

Wenn Ihr die ersten Schritte gegangen und webEdition Core-Entwickler seid, werdet ihr natürlich auch eine Einladung zum Gruppenbeitritt bekommen.

PHP

Ist nicht zwingend lokal erforderlich, wenn man Zugang zum Server/Webspace hat. Was ja sehr wahrscheinlich der Fall sein wird.
Als Debugger Tool nutzen wir: Phan

Wie wir PHP nutzen ... 
Wir schreiben Klassen, nutzen keine includes mehr. Die Stellen die noch includes nutzen, werden ausgebaut werden.
Wir haben strict typed properties (string ist string und es darf etsprechend kein int drinstecken).
Wir nutzen Klassen für die Datenhaltung und vermeiden Arrays.

Auch hier ist Phan sehr hilfreich bei der Ermittlung wo eine Umstellung noch erforderlich ist bzw. bei der Ermittlung von Fehlern.

Für die webEdition Tags ist es ein guter Start, sich diese nachfolgenden Tags anzuschauen:

  • we_tag_path – hier kommt ein String zurück
  • we_tag_ifClient – als Vertreter eines if-Tags, liefert ein bool Wert zurück
  • we_tag_ifNotDeleted – Im Normalfall sind die Not-Tags leere Konstrukte, es wird hier lediglich der If-Tag negiert

Eine essentielle Klasse ist die we_database_base, um die Datenbank anzusprechen und etwas abzurufen.

Beim Betrachten dieser Tag-Klassen dürfte deutlich werden, wie einheitlich, sauber und übersichtlich der Code jeweils aufgebaut ist.

SQL

Wir arbeiten im strict-mode.
Dies dient der Code-Sicherheit (Stichwort: SQL-Injections) und es werden damit schon frühzeitig Entwicklungs-Fehler aufgedeckt.
Auch möchten wir Tabellen-Constraints zunehmend einsetzen. Das ist derzeit jedoch leider nur bedingt möglich, da die Hoster teilweise keine aktuellen Datenbankversionen zur Verfügung stellen.

JavaScript

Wir setzen aus Gründen der Nachhaltigkeit kaum Frameworks ein.
Lediglich: jquery, jqueryui
Jedoch sollte in erster Linie Vanilla JavaScript eingesetzt werden.
Für JavaScript reicht theoretisch auch einfach der implementierte Browser-Debugger
Als Debugger-Tool empfehlen wir ESLint.

Wir möchten mit Version 9.2 den strict-mode einführen und inline JS vermeiden.
Künftig werden wir versuchen eine Kapselung von JS-Modulen zu entwicklen.

Wir verwenden data-Attributes, bspw. in der we_cmd sehr stark, um inline JS zu vermeiden.

CSS

Hier kommt kein spezielles Framework zum Einsatz. Das soll derzeit und wenn möglich auch künftig so bleiben - im Sinne der Nachhaltigkeit.
Für CSS reicht der implementierter Browser-Debugger.
Verbindungs-Werkzeug: sass

 

Schön und gut.
Aber wie fange ich nun also an?

Setze dir eine entsprechende Entwicklungsumgebung auf. 
Das bedeutet konkret - du brauchst wenigstens Mercurial (hg) und Jabber.

Du kannst Auschecken und Spielen. 
Solange kein Push gemacht wird, passiert nichts. - Und für einen solchen brauchst du eh Schreibrechte.

Wenn du soweit bist und willst loslegen, dann melde dich bei uns: committee@webedition.org

Wir ermöglichen dir einen leichten Einstieg und geben dir entsprechende Aufgaben für den Einstieg - ganz auf dich zugeschnitten und in Absprache mit dir.

Willkommen an Board! 

 

powered by webEdition CMS