![]() |
Open Sourcing von Komponenten - Best Practices?
Hallo zusammen,
wir werden nach und nach unsere intern verwendeten Bibliotheken und Komponenten als Open Source zur Verfügung stellen. Aktuell ist das ganze eine ziemlich lose Sammlung von Klassen, die teilweise noch nicht mal in Packages stecken. Wir haben also eine grüne Wiese mit viel "Wünsch-dir-was". Mich würde daher mal interessieren, was es für "Vorlieben" in der Community gibt. Betrifft die gesamte Bandbreite, also beginnend mit der Frage, ob die Klassennamen ein Prefix haben sollen, ob es je Klasse eine Datei oder eine Sammlung sein soll (Wartbarkeit vs. weniger uses-Einträge), wie die Packages aufgebaut sein sollten etc. Schwierig wird es beim Thema Deployment, da es IMHO für den zukünftigen Package-Manager noch keine öffentlichen Details gibt. Aber ich denke mal GitHub-Unterstützung wird schon drin sein. Hier sind ja doch einige, die in diversen Open-Source Projekten vertreten sind, da wird es sicher einige "lesson learned" bzw. "wie man es nicht machen sollte" geben. Bin auf den Erfahrungsaustausch gespannt. |
AW: Open Sourcing von Komponenten - Best Practices?
Nicht zu viele Abhängigkeiten zwischen den Units. Aus diesem Grund mache ich bei JCL und JVCL einen großen Bogen drum. Wenn eine Komponente separat existieren kann, dann sollte das auch so bleiben.
|
AW: Open Sourcing von Komponenten - Best Practices?
Package oder nicht, hat Vor- und Nachteile.
Wenn Du Units hast, die eigenständig funktionieren, dann finde ich es besser, diese Unit einfach einzeln rauszugeben. Die füge ich dann meinem Projekt hinzu und fertig. Wenn Du aber Abhängigkeiten zwischen mehreren (vielen) Units hast, dann finde ich es besser, die zu einem Package zusammen zu fassen. |
AW: Open Sourcing von Komponenten - Best Practices?
Klassen würde ich keine Pre- und Postfixe andichten wollen. Eigentlich wäre dazu der Namensraum da. Da Delphi als billigen Ersatz immerhin Punkte in Unitnamen zulässt könnte man ja immerhin die Benennung der Units reglementieren:
Delphi-Quellcode:
mit einem
CrazyLib.FluxCapacitor.pas
Delphi-Quellcode:
drinnen.
TFluxCapacitor
Ein schönes Beispiel dafür finde ich die (leider recht unbekannte) Lib von Cromis.net: ![]() |
AW: Open Sourcing von Komponenten - Best Practices?
Packages nur bei visuellen Komponenten in der K-Leiste. Alles andere ist Käse. Da gibt's Leute die machen aus jeder Prozedur eine Komponente.
|
AW: Open Sourcing von Komponenten - Best Practices?
Zitat:
Ein supergutes Edit sollte man aber nicht TEdit nennen, denn in der VCL IDE gibt es keine Namensräume. (OK, gibt es, aber nicht im FormDesigner ... ![]() |
AW: Open Sourcing von Komponenten - Best Practices?
Klar, an grafische Komponenten habe ich jetzt überhaupt nicht gedacht...
|
AW: Open Sourcing von Komponenten - Best Practices?
Zitat:
|
AW: Open Sourcing von Komponenten - Best Practices?
Ist Subversion und öffentlich (also eigentlich svn://). Mit dem Browser sehe ich da auch nur ein "Zugriff verweigert".
|
AW: Open Sourcing von Komponenten - Best Practices?
Der Browser lehnt blos das "ungültige" SSL-Zertifikat ab. (beim https)
Du mußt also nur eine Ausnahme für's SSL dieser Webseite im Browser aufnehmen. Zitat:
|
AW: Open Sourcing von Komponenten - Best Practices?
Zitat:
Kompiliert wird das ganze per Batchdatei. Auf diese Weise hat man die Quelltexte sauber von den kompilierten Units getrennt. Und die Units werden auch nicht dauernd unnötig neu kompiliert... |
AW: Open Sourcing von Komponenten - Best Practices?
Der Vorteil von einem Package für eine Bibliothek ist die gesparte Zeit beim Kompilieren, da die Units ja schon kompiliert vorliegen.
Aufpassen muss man nur, dass man nicht den Debug-Code in die Anwendung bekommt. Darum erzeuge ich die DCU-Dateien immer im Verzeichnis "lib\DELPHI-VERSION\$(Platform)\$(Config)" und erzeuge die Dateien für alle Plattformen jeweils als Release und Debug. Als Bibliotheks-Pfad dann "lib\DELPHI-VERSION\$(Platform)\Release" und bei Debug-DCU-Pfad "lib\DELPHI-VERSION\$(Platform)\Debug". Die Suchpfade wie gehabt und der Drops ist gelutscht. |
AW: Open Sourcing von Komponenten - Best Practices?
Ja, genau so. Und in Jenkins, das wir als Buildsystem nutzen, passiert das auch entsprechend automatisiert.
Der einzige echte Nachteil ist, dass man aufpassen muss, wenn man die Units gerade verändert. Denn dann sollen sie ja jedesmal kompiliert werden. Dafür kann man die betreffenden Units einfach temporär dem Projekt hinzufügen, am Ende das Sammelpackage neu erstellen und die Units wieder aus dem Projekt werfen (bzw. die Projektdateien aus dem Repository wiederherstellen). |
AW: Open Sourcing von Komponenten - Best Practices?
Lässt sich das mit der Delphi-Version auch irgendwie automatisieren?
Im Szenario wäre es ja so, dass wir logischerweise nur die Variante für die Delphi Version, die wir verwenden (aktuell XE2) zur Verfügung stellen. Wir würden also das Projekt zur Verfügung stellen und jeder möge es sich dann selber compilieren. Oder anders formuliert: Ich hätte gern nur eine Projektdatei :-) |
AW: Open Sourcing von Komponenten - Best Practices?
Zitat:
|
AW: Open Sourcing von Komponenten - Best Practices?
Zitat:
Allerdings ist das Ausgabeverzeichnis dann für alle gleich. Das wiederum ist schlecht für Parallelinstallationen. Ich weiß nicht, ob es auch dafür einen Platzhalter gibt, bei uns sind ohnehin eigene Packages pro Version notwendig. Es sollte für potentielle Nutzer aber kein Problem sein das selbst anzupassen, sprich eigene Packages entsprechend zu erstellen. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz