MyBB 2.0 Entwicklung #3

Veröffentlicht am 31.05.2015 von StefanT in MyBB

Es ist an der Zeit für einen neuen Artikel über die Entwicklung von MyBB 2.0. Die Version 2.0 ist die lang erwartete, bevorstehende Hauptaktualisierung der Open-Source Forensoftware MyBB, die sich derzeit in einem frühen Entwicklungsstadium befindet. Wir werden regelmäßig (versprochen!) Aktualisierungen zur Entwicklung veröffentlichen um euch auf dem neuesten Stand zu halten. Das Entwickler-Team hat seit dem letzten Artikel viel Zeit in das Hinzufügen von neuen Funktionen und das Aufpolieren der vorhandenen Features investiert. Dieser Blog-Eintrag soll einige dieser neuen Funktionen beleuchten und das Entwicklungskonzept des neuen Systems vorstellen.

Umstrukturierung der Feedback-Foren


Der ein oder andere hat bestimmt schon den überarbeiteten 2.0-Entwicklungsbereich des englischen Forums bemerkt. Die neue Struktur soll das Vorschlagen von neuen Funktionen und Verbesserungen vereinfachen und die bereits bestätigten und geplanten Features besser auffindbar machen. Bisher war das Vorschlags-Forum chaotisch und es gab keine klare Struktur. Wir hoffen, dass der überarbeitete Bereich für alle besser ist, sollte es weiteres Verbesserungspotential geben, meldet euch bitte.

Hintergrundinformationen


Wir versuchen in dieser Serie neben den Funktionen auch auf die Hintergründe zur Entwicklung von MyBB 2.0 einzugehen. Dieses Mal gehen wir näher darauf ein, wie am Front-End gearbeitet wird — genauer gesagt auf die CSS-Stylesheets und JavaScript.

Im aktuellen Entwicklungsstatus von MyBB 2.0 verwenden wird SASS um das Standard-Theme zu entwicklen. SASS ermöglicht eine deutlich größere Flexibilität und erlaubt uns schneller am Design zu arbeiten. Auch bietet es nützliche Hilfsmittel wie CSS-Variablen für Farben und sogenannte Mixings um häufig genutzte Regeln zu verwalten. Wir haben uns für SASS aufgrund seiner einfach zu erlernenden Syntax und des Funktionsreichtums entschieden, obwohl auch Alternativen wie LESS in Betracht gezogen wurden.

Wir versuchen auch der BEM-Syntax für das Theme zu folgen um CSS-Klassen für andere Entwickler besser verständlich zu machen und die Wiederverwendung der Klassen zu vereinfachen.

Wir untersuchen außerdem, wie wir SASS und LESS für Theme-Autoren direkt aus dem Admin-CP nutzbar machen können. Dies würde den Theme-Entwicklern eine größere Flexibilität ermöglichen und die Erstellung des Theme mit Hilfe von SASS oder LESS erlauben, während den Endnutzern die kompilierten CSS-Dateien ausgegeben werden.

Anders sieht der Ansatz bei JavaScript aus, hier wird aktuell reines JavaScript verwendet (und nicht Sprachen wie CoffeeScript oder TypeScript, die in JavaScript kompiliert werden), alle JavaScript-Komponenten verwenden jedoch einen globalen „MyBB“-Namenraum. Wir verwenden immer noch jQuery, allerdings aktuell in Version 2.1.4.

Hier ist eine Kostprobe dieses neuen JavaScript-Konzepts anhand des MyBB.Spinner Moduls:

(function ($, window) {
window.MyBB = window.MyBB || {};

window.MyBB.Spinner = {
inProgresses: 0,
add: function () {
this.inProgresses++;
if (this.inProgresses == 1) {
$("#spinner").show();
}
},
remove: function () {
this.inProgresses--;
if (this.inProgresses == 0) {
$("#spinner").hide();
}
}
}
})
(jQuery, window);

Um den Prozess des Kompilierens und Minifizierens unserer JavaScript-Module zu automatisieren verwenden wir das gulp.js-System. Dieses System kompiliert unsere SASS-Stylesheets in CSS-Syntax, speichert sie und minimiert sie in „*.min.css“ Dateien, die vom Theme verwendet werden können. Es kombiniert alle JavaScript-Dateien (einschließlich externer Bibliotheken wie jQuery) und komprimiert sie zusammen mit allen Grafiken, die vom Theme benutzt werden.

Dieser ganze Prozess erlaubt schnelle Iterations-Schritte bei der Entwicklung und der Design-Erstellung von MyBB 2.0 und wir arbeiten daran diese Möglichkeit auch Theme-Entwicklern und Seiten-Betreibern zu eröffnen. Wir haben vor, im Admin-CP einen Bereich zur Verwaltung von JavaScript-Dateien zu implementieren, sodass keine manuellen Template-Anpassungen mehr nötig sind. Zusammen mit der automatischen Minifizierung der Quelldateien und Vereinfachung der Benutzung von CDNs ermöglicht Administration eine größere Flexibilität und beschleunigt die Ladezeit des Forums.

PN-Konversationen


Das MyBB bietet seit langem, dass sich Mitglieder untereinander Private Nachrichten zusenden, welche nicht öffentlich einsehbar sind. Das System ist jedoch in der letzten Zeit eher eingeschränkt geworden: im System wird immer nur die letzte Nachrichten angezeigt und es sind nur 2 Beteiligte möglich. Daher haben wir uns entschieden dieses System bei MyBB 2.0 zu überarbeiten und ein mächtiges konversationsbasiertes System eingeführt.

Das neue System erlaubt mehrere Teilnehmer innerhalb einer Konversation und bietet eine Ansicht ähnlich der Themen im Forum.

Beispielhafte private Konversation mit mehreren Teilnehmern


Überarbeitetes Benutzer-CP


Das Benutzer-CP des MyBB ist ein Anlaufpunkt für alle Nutzer ihr Profil zu verwalten, ihre Signatur und ihr Avatar einzurichten, ihre Einstellungen zu konfigurieren und vieles mehr. Bei MyBB 2.0 wurde es deutlich überarbeitet und neu gestaltet um dem Benutzer die Profil-Verwaltung zu vereinfachen.

Die Menü-Leiste des Benutzer-CP bleibt bestehen (zusammen mit der einfachen Erweiterbarkeit für Plugin-Entwickler), es wurden aber einige zusammengehörenden Elemente zusammengefasst. Außerdem wurde der Bereich Private Nachrichten entfernt, da dieser Teil nun über die Konversations-Verwaltung und ein Ausklapp-Menü im Header auf allen Seiten erreichbar ist.

Die meisten Benutzerdetails werden auf einer einzigen „Profil“-Seite im neuen Benutzer-CP eingestellt. Diese Seite zeigt auch alle eigenen Profilfelder, die vom Administrator eingerichtet wurden, sodass alle Details auf einer eingenen Stelle eingegeben werden können.

Profil-Seite des neue Benutzer-CPs

Beachte, dass alle für den Account relevanten Aktionen auf dieser einen Seite erledigt werden können und nicht auf mehrere Seiten verteilt sind.

Einige vom Administrator angelegten Profilfelder.

Felder können zusammen gruppiert und unter verschiedenen Überschriften angezeigt werden, haben Validierung-Regeln, können als Pflichtfeld konfiguriert werden und können verschiedene Datentypen haben.

Eigene Profilfelder wurden bei MyBB 2.0 deutlich erweitert und soll die Funktionalität vieler Plugins, dies es für MyBB 1.8 gibt, ersetzen. Wir werden auf dieses Feature im Details in einem weiteren Blog-Artikel eingehen.

Lizenz von MyBB 2.0


MyBB hat bisher die Lesser GNU Public License Version 3 (LGPL3) bei MyBB 1.8 und davor die GNU Public License Version 3 (GPL3) verwendet.

Beide Lizenzen sind Open-Source-Lizenzen, beide enthalten jedoch einige Beschränkungen. Einen groben Überblick über diese Beschränkungen bietet TLDRLegal (englischsprachig).

Für MyBB 2.0 haben wir uns für ein klareres und einfacheres Lizenzmodel entschieden. Verschiedene Lizenzen wurden in Betracht gezogen, unter anderem die sehr offene MIT Lizenz. Schlussendlich haben wir uns für MyBB 2.0 und alle dazugehörigen Bibliotheken für die BSD 3 Clause (BSD-3) Lizenz entschieden.
Diese Lizenz ist viel einfacher als die bisherigen Lizenzen und enthält folgende wesentlichen Einschränkungen:
  • Weder die Namen und Markenzeichen der MyBB-Group noch die Markenzeichen und Logos von Projekt-Beteiligten dürfen zum Kennzeichnen oder Bewerben von Produkten verwendet werden.
  • Die MyBB-Group kann nicht für durch die Software verursachte Schäden haftbar gemacht werden.
  • Die originalen Copyright-Hinweise müssen erhalten bleiben.

Diese Änderung sollte keine Auswirkungen auf normale Benutzung haben und erfordert in den meisten Fällen keine Anpassungen. Wir hoffen damit die Verwendung von MyBB und unseren Bibliotheken zu vereinfachen.

Zum Abschluss


Dies war der monatliche Bericht zur Entwicklung von MyBB 2.0. Wie ihr hoffentlich sehen könnt, hat das Team hart gearbeitet und auf eure Kommentare und Anmerkungen reagiert. Natürlich gibt es noch viel mehr anzukündigen und zu zeigen; haltet hier also nach neuen Artikeln Ausschau.

Quelle: 2.0 dev post #3 von Euan T.