Abzweigungen von Blockly

Dieses Dokument richtet sich an Entwickler, die Blockly in der Vergangenheit verzweigt haben und auf eine neue Version von Blockly aktualisieren möchten, ohne die Bibliothek zu patchen. Obwohl dies eine gewaltige Aufgabe erscheint, gibt es ein paar Schritte, die Sie unternehmen können, um den Prozess überschaubarer zu gestalten.

Das Konzept von „Unforking“

Wenn du Mainline-Blockly verwendest, verwendest du eine kürzlich veröffentlichte Version von Blockly und alle deine Anpassungen verwenden öffentliche Blockly APIs ohne Monkeypatching. Das Verzweigen ist die Arbeit, die Sie ausführen müssen, um die benutzerdefinierte Funktionalität Ihrer Verzweigung mit Mainline-APIs zu implementieren.

Einfache Fälle zum Verzweigen

Im Folgenden finden Sie zwei häufige Gründe für eine Verzweigung sowie Lösungen für die Rückkehr zur Hauptversion:

  • Sie haben Ihre eigenen Blöcke und Generatoren erstellt, ohne Blockly-Code zu ändern: Um in dieser Situation eine Verzweigung zu erstellen, können Sie Ihre benutzerdefinierten Blöcke und Generatoren einfach aus dem Blockly-Repository in den Code Ihrer eigenen Anwendung verschieben. Anschließend sollten Sie Ihre Blockly-Version aktualisieren können.
  • Sie haben dem Blockly-Namespace benutzerdefinierte Funktionen hinzugefügt, ohne Blockly-Code zu ändern: Sie haben beispielsweise benutzerdefinierte Felder oder Hilfsmethoden hinzugefügt, die nur von Ihrer eigenen Anwendung verwendet werden. Verschieben Sie in dieser Situation diesen benutzerdefinierten Code in Ihre eigene Anwendung außerhalb des Blockly-Repositorys. Anschließend sollten Sie Ihre Blockly-Version aktualisieren können.

Umfassender Fall von Unforking

Verzweigte Funktionalität bestimmen

Der letzte Grund, aus dem wir sehen, dass Nutzer eine Verzweigung aufrufen, besteht darin, Blockly zu patchen, um benutzerdefinierte Funktionen zu erstellen, die ihrer Meinung nach zu diesem Zeitpunkt nicht vorgelagert sind. Wenn Ihre Fork erheblich veraltet ist, haben wir die benötigten Funktionen möglicherweise bereits als Plug-ins oder als Core hinzugefügt. Wenn Sie wissen, welche Features Sie Ihrer Verzweigung hinzugefügt haben, können Sie eine Roadmap dafür erstellen, welche Features aktualisiert werden müssen.

Architektur verstehen

Sobald Sie die Funktionen verstanden haben, für die fork-spezifische APIs verwendet werden, sollten Sie Folgendes in Betracht ziehen:

  • Gibt es eine Möglichkeit, jedes Feature, das den Fork verwendet, mithilfe von Blockly APIs zu replizieren?
  • Wenn Sie die Funktion nicht mithilfe der Blockly APIs replizieren können, wenden Sie sich bitte über das Forum an uns oder melden Sie ein Problem auf GitHub. Unser Team untersucht dann das Hinzufügen von APIs, um Ihre Anpassung zu ermöglichen.

Bestimme deinen abzweigenden Weg

Der nächste Schritt besteht darin, mit der Implementierung der neuen Blockly-basierten Architektur für Features zu beginnen, die den Fork verwenden. Dafür gibt es zwei Hauptansätze:

  • Führen Sie ein Upgrade von Blockly durch und sehen Sie, welche Fehler auftreten: Sie sehen sofort die Bereiche in Ihrem Code, die aktualisiert werden müssen. Sie können dies in Kombination mit dem, was Sie bereits wissen, als Leitfaden für die Entwicklung verwenden.
  • Code refaktorieren, um Ihre Features von Blockly zu trennen: Dies erfordert ein tiefgreifendes Verständnis dafür, welche Features an Ihre Verzweigung angepasst sind und welche von Blockly stammen. Sobald Ihr Code vollständig getrennt ist, ersetzen Sie Ihre alte Version von Blockly durch die neueste Version und beheben Sie dann alle verbleibenden Integrationsprobleme.

Zukunftspläne

Folgende Regeln sollten Sie als Blockly-Entwickler in Zukunft befolgen:

  • Im Allgemeinen sollten Sie dem Blockly-Namespace keine neuen Klassen hinzufügen. Sie können benutzerdefinierte Felder oder andere registrierbare Klassen registrieren, ohne sie im Blockly-Repository oder im Blockly-Namespace zu deklarieren.
  • Sie sollten sich beim Kompilieren Ihrer eigenen Anwendung nicht auf die Build-Tools von Blockly verlassen. Wir betrachten unsere Build-Tools nicht als Teil der öffentlichen API. Daher nehmen wir möglicherweise Änderungen an ihnen vor, die Ihre Anwendung beeinträchtigen. Sie sind für die Kompilierung Ihrer Anwendung verantwortlich, falls Sie dies wünschen.

Kontakt aufnehmen

Blockly ist immer über das Blockly-Forum verfügbar. Wenn Sie Probleme haben, können Sie sie hier posten, damit wir Ihnen helfen können.