Könnte Free Pascal von etwas wie Apache Maven profitieren?

9

Apache Maven ist ein sehr beliebtes Build- und Abhängigkeitsverwaltungstool in der Java-Open-Source-Ecosphäre. Ich habe einige Tests durchgeführt, um herauszufinden, ob es kompilierte Free Pascal / Delphi-Einheiten verarbeiten kann und es einfach zu implementieren war. So wäre es möglich,

  • veröffentlicht Open-Source-Bibliotheken, die für Free Pascal (oder Delphi) in einem öffentlichen Maven-Repository vorkompiliert wurden
  • enthält Metadaten in diesem Repository, die Abhängigkeitsinformationen enthalten
  • Verwenden Sie Maven in der Befehlszeile, um die Open Source-Bibliothek aus dem öffentlichen Repository herunterzuladen und alle Abhängigkeiten automatisch zu lösen
  • lokale Repositories, die als Proxies dienen, können zum Zwischenspeichern häufig verwendeter Binaries verwendet werden
  • automatische Generierung und Überprüfung der Prüfsumme (von Maven bereitgestellt) würde das Risiko verringern, beschädigte Binärdateien herunterzuladen
  • Quellcode und sogar Dokumentationsdateien können mit den Binärdateien
  • bereitgestellt werden
  • Binaries können mit oder ohne Debug-Informationen bereitgestellt werden
  • Server mit kontinuierlicher Integration wie Hudson , TeamCity oder CruiseControl können verwendet werden, um Projekte zu erstellen, wenn Änderungen an das Quellcodeverwaltungssystem gesendet wurden und Entwickler über Buildfehler informiert werden

Diese Art der Abhängigkeitsverwaltung könnte für Open-Source-Projekte sehr nützlich sein, die viele Bibliotheken von Drittanbietern mit komplexen Abhängigkeiten verwenden. Es würde typische Konflikte vermeiden, die durch die Verwendung falscher Versionen verursacht werden.

Für den Entwickler wäre der Workflow zum Bearbeiten und Erstellen eines Projekts auf ein Minimum reduziert:

  • check die Projektquelle aus dem internen Versionskontrollsystem
  • Quelldatei (en) bearbeiten
  • Führen Sie mvn package aus, um alle erforderlichen Bibliotheken von Drittanbietern (vorkompilierte Einheiten) automatisch herunterzuladen, wenn sie sich noch nicht im lokalen Repository der Arbeitsstation befinden
  • kompilieren und ausführen

Die einzige zusätzliche Datei für Apache Maven, die im Projektordner benötigt wird, ist die POM.XML-Datei, die die Projektinformationen enthält.

Edit: Während Maven für einige der benötigten Aufgaben verwendbar ist, hätte die Implementierung einer Lösung wie Maven in nativem Free Pascal einige Vorteile: kein Java SDK erforderlich, Unterstützung für alle Entwicklungsplattformen, auf denen Free Pascal verfügbar ist, Wartung und Plugin-Entwicklung in Pascal.

Die Verwendung eines Maven-ähnlichen Tools wäre nur für Open-Source-Projekte nicht hilfreich - kommerzielle Projekte könnten auf die Artefakte in öffentlichen Maven-Repositories ebenso zugreifen und sie verwenden.

Maven-Features sind unter Ссылка

aufgeführt

Aktualisierung:

Ein Anwendungsfall könnte der Build von Lazarus sein, wo Maven alle benötigten Bibliotheken herunterladen und den Compiler mit den notwendigen Build-Pfad-Argumenten aufrufen würde. Änderungen in den Abhängigkeiten auf niedrigeren Ebenen werden automatisch bis zum übergeordneten Build weitergegeben.

Mögliche Vorteile:

  • weniger Zeit für die Einrichtung einer neuen Arbeit Station, keine manuelle Installation von Bibliotheken von Drittanbietern erforderlich
  • weniger Fehler durch falsche Bibliothek Versionen, Erkennung der Version Konflikte (zum Beispiel wenn zwei Bibliotheken sind unterschiedlich Versionen einer dritten Bibliothek)
  • Artefakte, die inhouse erstellt werden kann zum lokalen Maven hinzugefügt werden Repository und geteilt zwischen Entwickler und Projekt, zentral Speicherung aller Artefakte mit Metadaten
  • Builds sind reproduzierbar, nur durch Verwenden derselben Quelle und desselben Projekts Metadatendatei (pom.xml)
  • kann Entwicklungszeit reduzieren und erhöhen Sie die Projektstabilität

Update # 2: FPMake

Das FPMake Build-System für Free Pascal scheint ein Werkzeug mit viel Potential zu sein, in vielen Details ist es Maven ziemlich ähnlich :

  • FPMake ist ein Pascal-basiertes Build-System, das für FPC
  • entwickelt und vertrieben wird
  • FPMake standardisiert das Gebäude, indem es einige Einschränkungen wie Standardverzeichnisse definiert
  • Der Befehl fppkg <packagename> sucht in einer Datenbank nach dem Paket, extrahiert es und kompiliert fpmake.pp und führt es aus
  • es hat Standard-Build-Ziele (sauber, bauen, installieren, ...)
  • es kann eine 'manifest'-Datei erstellen, die für den Import in ein Repository geeignet ist (wie mvn deploy oder mvn install ), das Manifest ist eine XML-Datei, die einer pom.xml in Maven sehr ähnlich sieht:

FPMake-Manifestdatei:

%Vor%     
mjn 06.01.2010, 14:48
quelle

2 Antworten

1

Freepascal hat an einem eigenen Paketsystem gearbeitet, das zwischen apt-get und freebsd ports style geht. (Download Quelle / Build / Installation automatisch), genannt fppkg. Aber die Arbeit ist ins Stocken geraten. Menschen, die Zeit investieren, sind der Engpass, nicht Menschen, die Werkzeuge wählen wollen.

Soweit Maven geht, mag ich keine Hilfswerkzeuge, die eine Installation von großen externen Laufzeiten benötigen. Es könnte für eine große App (wie Open Office) in Ordnung sein, aber nicht für ein Util.

Ich bevorzuge auch ein Werkzeug, das auf die Realität und den Workflow der FPC abgestimmt ist. Dokumentationstools, Build-Tools, Download-Systeme, Testsuite-Systeme sind bereits vorhanden, es braucht nur eine Person, die viel Zeit dafür aufwendet, um dies zu ermöglichen.

Einige typische Probleme bei der Einführung einer neuen Technologie in einem Projekt als FPC, und warum es eine Tendenz hat, seine eigenen Werkzeuge zu machen:

  • muss 20+ Committer in Teilzeit trainieren.
  • Die einzige allgemeine Programmiersprache, die Sie annehmen können, ist Free Pascal. Sogar Delphis innere Abläufe können nicht als selbstverständlich angesehen werden (viele Committer kamen direkt zu FPC oder sogar noch über TP oder einen Mac Pascal)
    • Offensichtlich nervt das etwas mit Plugins in einer anderen Sprache.
  • Bash-Skript ist eine nahe Sekunde. (g) mach dritt, aber schon eine Größenordnung weniger.
  • Alle Server sind * nix-ähnlich (FreeBSD, OS X, Linux), aber nicht alle laufen Apache. (z. B. mein FreeBSD-Spiegel läuft XSHTTPD)
  • Jemand, der am besten informiert ist, muss für lange Zeit ein dedizierter Betreuer sein. Beheben Sie Probleme, aktualisieren Sie Migrationen usw., vorzugsweise mehr als eins aus offensichtlichen Gründen.
  • Ein großer Nachteil sind Linux-Distributionen (und in geringerem Maße FreeBSD), die meisten Maintainer von * nix-Paketen können nicht mehr als "./configure; make; make install" und müssen mit einem nahebaubaren Repository gespoolt werden und Hilfsdateien.
    • Die In-Distribution-Verpackung von FPC / Lazarus war schon immer wichtig und nimmt weiter zu
    • Alle Distributionen haben ihre eigenen speziellen Regeln bezüglich Metadaten, Dependenzen und wie Quellen veröffentlicht werden müssen. Besonders Debian / Ubuntu ist sehr bürokratisch und langsam.
    • Die meisten mögen keine automatischen Installationsprogramme von Drittanbietern auf ihren Systemen (da dies ihre Abhängigkeitskontrolle umgeht)

Dies alles führt zu der effektiven Praxis, dass eigene Tools in Pascal mit minimalem Scripting am besten funktionieren. Einige Werkzeuge verwendet:

  • Gmake wird hauptsächlich verwendet, um den Build-Prozess auf einer Verzeichnisebene zu parametrisieren, ein Nachfolger, fpcmake (nicht wirklich ein Make-Derivat trotz des Namens) hat begonnen, aber die Migration ist nicht abgeschlossen.
  • Latex und eine Konvertierung von Latex in HTML (tex4ht, aber Debian verwendet hevea) werden im Dokumentationsgebäude (der Nichtbibliotheksdokumentation) verwendet
  • Die Community-Site (Netscape-Community-Server, der TCL-Scripting verwendet, ein schwerer komplexer Anwendungsserver) war seit dem Start ein Problem, aber besonders in letzter Zeit, seit der Betreuer weniger aktiv wurde.
  • Mantis war ein Problem (besonders das E-Mail-Modul würde den Server aufgrund des Volumes zum Absturz bringen oder lahm legen), aber es wurde während sukzessiver Updates und der harten Arbeit von mehreren Lazarus-Entwicklern in Form gebracht. Zur Zeit ist es ein ordentliches Arbeitspferd.
  • lazarus.freepascal.org PHPBB Forum OTOH ist relativ schmerzlos, da viele jüngere Leute damit umgehen können.
  • Gleiches gilt für Subversionen (obwohl die fortgeschrittenere Skala einige Anpassungen erfordert, ist nicht jeder tief in die In- und Outs von mergetracking involviert)

Wenn jemand Maven wirklich ernst nimmt, frage ich ihn normalerweise:

  • to KRITISCH untersuchen die Verwendung für das Projekt. Auf sehr konkrete Weise, mit Zeitplan und Zeitschätzungen. Vogelperspektive "alles ist möglich" Übersichten sind im Wesentlichen wertlos.
  • Überlegen Sie sich etwas über den zukünftigen Wandel der verwendeten Technologien. In 18 Jahren + Projekten wird schließlich jede Technologie ersetzt, sogar die Inhouse-Technologie. Eine neue Technologie darf die Migration anderer Infrastrukturkomponenten nicht erschweren oder behindern. Die neue Technologie zur Beendigung aller neuen Technologien existiert nicht.
  • Erstellen Sie einen Migrationsplan. Migration wird oft unterschätzt und unterschätzt.
  • Und am Ende gibt es immer die 1000000 Euro Frage, wer wird die tägliche Wartung machen?

Beachten Sie, dass Sie in einer Firma nur die für den Anwendungsserver verantwortliche Person kicken. Aber in einer informellen Umgebung ist dies viel schwieriger, besonders langfristig, da das Leben, die Beschäftigung und die Zeit, die der Mensch für das Projekt benötigt, variieren.

    
Marco van de Voort 12.12.2009 14:43
quelle
0

Klingt nach einem interessanten Plan, aber die Delphi-Gemeinschaft (und FPC, mehr noch, ich könnte es mir vorstellen!) schätzt Bibliotheken als Quelle weit mehr als vorkompilierte Bibliotheken. Der allgemeine Konsens ist, dass jeder, der eine Binary-Only-Bibliothek verwendet, aus zwei Gründen ein Dummkopf ist: Sie können keine Fehler beheben, die darin enthalten sind, und Änderungen am Compiler beeinträchtigen die Kompatibilität.

    
Mason Wheeler 12.12.2009 13:52
quelle