Zuletzt besucht
Zuletzt besucht

Orion-Technologie

Solaris 11.4

  • DTrace — Wir haben den Ansatz der Küchenspüle gewählt: Alle unsere dyamischen Programmiersprachen-Tools integrieren sich damit. Während bpftrace eine nette Neuentwicklung für Linux ist, ist es weit entfernt, nützliche Dinge im dynamischen Sprachraum zu tun, wo die Aktion ist.

  • ZFS — besser mit Solaris, unterstützt durch Oracle Support. Akzeptieren Sie keine Substitute.

  • Zonen — bietet Serviceisolierung und entsprechend sandboxed Site Builds.

node.js v21.6.1

  • Da Editor.md awesome ist, haben wir es zu node.js — WYSIWYG, unabhängig vom Kontext des Betrachters (Bearbeitung in unserer Online-IDE oder Durchsuchen der resultierenden Produktionswebsite).

Perl v5.38.2

  • Jetzt w/ mod_perl v2.0.14 w/ ithreads und httpd v2.4.67 w/ event mpm.

Subversion v1.14.6

  • benutzerdefinierte ithread-safe SVN: Client Bindings mit Speicherpools pro Anforderung.

  • native python3-Bindings (v3.8.3).

  • Threaded python3 Ports von svnpubsub und svnwcsub — das gesamte Kit und Caboodle für die verteilte Bereitstellung von Unternehmen/CDN-Standorten mit Subversion.

  • hat python3 abgeschlossen Ansichtsbereich Port. Wird eine Pull-Anforderung für meine Änderungen vorgelagert prüfen, wenn es die Zeit zulässt.


Einige Bemerkungen auf den Straßen nicht (noch?) In Anspruch genommen…


SQL

Wir sind ein NoSQL-Shop für unsere gesamte Website-Infrastruktur. Wenn Sie mit einem riesigen Single-Point-of-Failure ausgestattet sind, der als RDBMS bekannt ist, das die Assets Ihrer Website steuert, überdenken Sie bitte einen dezentraleren Ansatz, der auf der Jamstack- und Serverless-Technologie basiert. Auch wenn es nicht unsere ist. Sie werden uns später danken!

Warum nicht Git?

  • Die git svn Bridge ist bereits vorhanden, wenn Sie lieber mit git selbst arbeiten, anstatt die Online-IDE für Orion zu verwenden ™. Sie haben Optionen! Möglicherweise erhalten Sie noch mehr Kilometer von GitHub-Aktionen, indem Sie Ihre Änderungen an GitHub übergeben (und sie in einer GitHub-Aktion auskleiden, oder Pre-Commit-Hook oder beides, sagen Sie) git svn dcommit- sie zu unseren Subversion Repos für Live-Publikation. Hier ist eine Live-Git-Kopie der Quellen dieser gesamten Website.

  • Website-Quellbäume sind nicht ganz wie Software-Quellbäume, in Bezug darauf, wie Sie sie ändern und verwalten. Sie sind besser auf Devops/Trunk-basierte Entwicklung als mit gitflow. Darüber hinaus werden gigantische Websites SSI und vielleicht ein wenig CGI für ihren Einsatz benötigen: Zumindest um massive, unübersehbare Abwanderungen von gleichermaßen massiven Commit-Mailern zu vermeiden. Diff. Ausgabe der resultierenden Baumdeltas ausgeben.

  • To wit: versuchen, eine voll funktionsfähige SSI-Implementierung aus einigen lokalen “Webserver” dass Sie Ihre Änderungen in einem anderen Build-System in der Vorschau anzeigen, ist nur ein wenig albern, wenn Sie aufhören und darüber nachdenken. Mit unserem Orion erstellen Sie einfach einen Zweig in svn und los geht’s: Bearbeiten, Festschreiben, Erstellen, Surfen und iterieren, sofort auf einer verzweigten, flüchtigen Apache-Served-Website, die in Orion integriert ist ™ Die bidirektionale Link- und Bookmarklet-Umleitungsinfrastruktur von IDE. Ohne jemals Ihren Browser zu verlassen.

  • Wenn es Zeit ist, diese Änderungen auf den Stamm-basierten Produktionsstandort zu migrieren, können Sie wählen, so viel oder so wenig von der Filiale zu fördern, wie Sie es für richtig halten, direkt zurück zum Stamm. Wenn sich der Stamm nach vorne bewegt hat, da Ihre Filialänderungen letztendlich zur Prime Time bereit waren, klicken Sie einfach auf Synchronisieren , um den Stamm mit Ihrer Filiale zu synchronisieren. Nachdem Sie die Build-Ergebnisse Ihres Post-Sync-Merge Commit auf der Website Ihrer Filiale überprüft haben, klicken Sie auf die Hochstufen Link, folgen Sie dem mit einem Festschreiben auf der gleichen Seite mit einer vernünftigen Commit-Protokollnachricht und voilà, Sie senden jetzt auf Trunk-Produktions-Build.

  • Wenn Sie die resultierenden Build-Bäume mit Versionskontrolle verteilen und damit umgehen müssen, werden Sie Git nicht in großem Maßstab mögen. Insbesondere bei der Integration von binären Artefakten (z. B. Software-Releases) oder (Legacy) Produktdokumentation (denken Sie an Sauerstoff oder javadocs), die mit diesem System oder mit einem Drittanbieter-Builder erstellt wurden, den Sie lokal verwenden, um diese Build-Ergebnisse einfach direkt in unsere Ziel-Repositorys hochzuladen. Mit unserem Ansatz können Sie unnötige Unordnung und Blähungen im Quellbaum Ihrer Website vermeiden, im Gegensatz dazu, wie es mit Git funktionieren würde, indem Sie Zweige in einem Repository verwenden, das sowohl für Ihre Quelle als auch für den Baumbau verwendet wird.

  • Subversion unterstützt fein granulierte Zugriffskontrolle und ermöglicht Teil-/Sparse-Checkouts von Kopf; mit Git haben Sie KEINE ACLs außer bei einem All-or-Nothing-Branch-Push, und Sie müssen die gesamte Verzweigung (einschließlich Historie) vorher klonen. Wenn Sie die Notwendigkeit dieser svn-only-Featuresets nicht erkennen, haben Sie die Bemerkungen des vorherigen Elements (siehe oben) noch nicht eingepfiffen.

  • Für die IDE benötigen wir Read+Write Perl Bindings für libgit2 (die nicht vom eigentlichen Git-Entwicklungsteam bereitgestellt wird und weitgehend von megalithischen Unternehmen unterstützt wird, die KEINE Online-IDE für git als vergleichbares SaaS-Produkt bereitstellen; und nein, GitHubUm das httpd-kompatible Speichermanagement-Regime von svn und die Sicherheit des POSIX (+ Perlithreads)-Threads in einer persistenten Laufzeit und über mehrere serverseitige Git-Repositories von Clientwebsite-Bäumen hinweg abzugleichen. Die Reife dieser Open-Source-Infrastruktur ist nach unserer Schätzung für 2020 nicht bankfähig, aber wir werden die Entwicklungen in Zukunft im Auge behalten. Sieh dich an, Git::Raw!

  • Ich weiß immer noch nicht, wie man ein posix-thread-sicheres Git Porzellan herstellt. Thread-Sicherheit über separate Repositorys, aber innerhalb eines gemeinsamen Prozess-RAM, ist der Anwendungsfall, nicht Thread-Sicherheit innerhalb eines bestimmten Repositorys (was eine nussige Frage ist).

Warum nicht Python oder Ruby oder Javascript oder Go?

  • GIL-addiert mod_python hat noch einen Weg zu gehen, bevor es die Reife erreicht mod_perl in einem Gewinde mpm. Darüber hinaus ist die aktuelle Implementierung unseres Produkts eng in die vollständige Modul-API des Apache HTTPd-Servers integriert, die nur mod_perl bietet.

  • GIL-addiert mod_ruby wurde von der Ruby-Community aus verschiedenen Qualitätskontrollgründen weitgehend aufgegeben. Portierung der benutzerdefinierten 5K LOC Perl 5 Quellen von Orion ™ Eine andere Programmierumgebung würde in etwa 10-100 Faltballon die Zeilenanzahl der Implementierung und damit eine wesentliche Leistungseinbuße in jeder anderen dynamischen Programmiersprache.

Um sicher zu sein, hier ist ein Snapshot vom 19. Juli 2020 des Teils SunStar Systems des Produktionsquellenbaums für den gesamten Orion (IDE+build). Es gibt wenig mehr über unsere Sternzeichen:DTL Gabel. Der gesamte Build-bezogene Code wurde bereits auf GitHub bezogen. Was bleibt privat sind die C-basierten Anpassungen an Drittanbieter-Quellbäume, die einzigartige Unterscheidungsmerkmale für unser Produkt sind.

joe@zeus:/x1/Orion% wc -l */lib/SunStarSys/**/*.pm
     1 build/lib/SunStarSys/ASF.pm
   128 build/lib/SunStarSys/SVNUtil.pm
   270 build/lib/SunStarSys/Util.pm
    36 build/lib/SunStarSys/Value.pm
    82 build/lib/SunStarSys/Value/Blogs.pm
    61 build/lib/SunStarSys/Value/Jira.pm
    77 build/lib/SunStarSys/Value/Mail.pm
    70 build/lib/SunStarSys/Value/SVN.pm
   106 build/lib/SunStarSys/Value/Snippet.pm
    85 build/lib/SunStarSys/Value/Twitter.pm
   378 build/lib/SunStarSys/View.pm
  1260 webgui/lib/SunStarSys/Orion.pm
   112 webgui/lib/SunStarSys/Orion/Cookie.pm
   183 webgui/lib/SunStarSys/Orion/Filter.pm
    90 webgui/lib/SunStarSys/Orion/MapToStorage.pm
    59 webgui/lib/SunStarSys/Orion/WC.pm
   194 webgui/lib/SunStarSys/Orion/WC/Add.pm
    97 webgui/lib/SunStarSys/Orion/WC/Browse.pm
   133 webgui/lib/SunStarSys/Orion/WC/Commit.pm
    79 webgui/lib/SunStarSys/Orion/WC/Copy.pm
    66 webgui/lib/SunStarSys/Orion/WC/Delete.pm
    47 webgui/lib/SunStarSys/Orion/WC/Diff.pm
   182 webgui/lib/SunStarSys/Orion/WC/Edit.pm
   116 webgui/lib/SunStarSys/Orion/WC/Mail.pm
    70 webgui/lib/SunStarSys/Orion/WC/Merge.pm
    67 webgui/lib/SunStarSys/Orion/WC/Move.pm
    52 webgui/lib/SunStarSys/Orion/WC/Production.pm
    47 webgui/lib/SunStarSys/Orion/WC/Promote.pm
    60 webgui/lib/SunStarSys/Orion/WC/Resolve.pm
    64 webgui/lib/SunStarSys/Orion/WC/Revert.pm
    82 webgui/lib/SunStarSys/Orion/WC/Rollback.pm
   123 webgui/lib/SunStarSys/Orion/WC/Search.pm
    78 webgui/lib/SunStarSys/Orion/WC/Staged.pm
    24 webgui/lib/SunStarSys/Orion/WC/Static.pm
    49 webgui/lib/SunStarSys/Orion/WC/Update.pm
   220 webgui/lib/SunStarSys/SVN/Client.pm
  4848 total
  • mod_js nie den Schnitt für httpd v2 gemacht, viel weniger Threaded mpm’s.

  • Es wird versucht einzubetten GoLang httpd, mit nativen version-control-bindungen, wäre eine lustige herausforderung; nur nicht für mich persönlich. Gute Sprache mit interessanten Kompromissen, wenn es um dynamisches Verknüpfen geht, aber eine definitive vielleicht für zukünftige Untersuchungen.

  • Was das Perl 5 Build-System betrifft, bleiben Sie dran! Kein Grund, warum es nicht auf eine andere Programmiersprache portiert werden kann, da das Build-System vollständig von Orion isoliert ist ™Online-IDE (außerhalb des Markdown-Renderer-Daemons basierend auf node.js, das ein eigenständiges System selbst ist) aus einer Million Sicherheits-/Architekturgründen. Wenn Sie einen Teaser über die Möglichkeiten benötigen, werfen Sie einen Blick auf die build_external.pl script over im @SunStarSys Orion-Repository: Die ASF verwendete es für alle Arten von Dingen, die keinen dringenden Bedarf an einem Abhängigkeitsmanagementsystem hatten.

  • Ja, Perls Popularitätstrajektorie verfolgt ironischerweise die von COBOL oder sogar Common Lisp, trotz der Dominanz von Unix auf dem Servermarkt; aber einige Dinge altern besser als andere. Die solide (und einzigartig Perl) ithread Engineering aus p5p, in Vorbereitung auf das Aufkommen von Perl 7, ist eine willkommene Nachricht an mod_perl Entwickler, die immer noch an Doug MacEacherns ursprüngliche Vision festhalten. Wenn Sie sich knietief in 100+ LOC Perl Quellen finden, um das zu bekommen, was Sie von unserem aktuellen Perl-only Build-System benötigen, lassen Sie uns chatten — Vielleicht können wir an etwas weniger Komplexem zusammenarbeiten, mit dem Sie Ihre Website erstellen können. Weniger ist mehr mit Perl.

Warum nicht etwas, das auf der JVM basiert?

  • Gerade so ausgearbeitet, angesichts meiner 20-jährigen Geschichte mit dem LAMP Stack und konstruktiven Beiträgen zur erweiterten Apache HTTPd Webserver-Community. Machbar, aber wieder ein massives Unterfangen mit vielen harten Engineering-Problemen, die auf dem Weg zu lösen sind.

Index

  • Orion-Sicherheit — “Sicherheit durch Dunkelheit ist überhaupt nicht viel Sicherheit.”…

  • SunStar System-OrionEnterprise Jamstack Wiki-Plattform  für Erstellen, Verwalten und Bereitstellen statische Webseiten mit Jamstack Technology für dynamische Features…

  • Orionpläne — Jährliche Vorabrabatte (bis zu 20% Rabatt auf monatliche Abrechnungskosten)…

  • Orion-Funktionen — Dieselbe Javascript-Code-Rendering-Engine in Ihrem Browser und im (node.js-basierten) markdown.js-Build-Skript…

  • Orion Datenschutzerklärung — Es handelt sich um ein DSGVO-konformes Opt-in-System. Beim ersten Besuch im Orion ™ CMS/IDE, Sie werden zu einer Google-Seite weitergeleitet, die Sie zur Autorisierung auffordert…

  • Orion-Referenz — Diese Hot-Pink-Bleistift-Symbole oben rechts neben den Brotkrümeln gibt Ihnen eine Live-Demonstration…

  • Orion-API — Auf dieser Seite werden die APIs Search, Online Editor, Django Template Library und Build System indexiert…