Forum

Moderiert von:
Forum Index
Entwicklerforum
     Entwicklungs Support
     Abhängigkeit der Module
Hilfe anzeigen
Hilfe anzeigen

Autor Druckerfreundliche DarstellungAbhängigkeit der Module
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 05.12.2006 19:06

Ich habe mal das Modul "Bug Tracking" probeweise installiert, damit ich lokal den Fehler #975 nachstellen und beheben kann. Habe aber nicht bedacht das dieses Modul noch ein weiteres Module benötigt.

Existiert eigentlich in OPN so eine Abhängigkeitsabfrage?

Wenn OPN schon an Linux angelehnt ist, dann sollte wir auch die guten Eigenschaften von Linux adaptieren.

Also, z.B. eine Fehlermeldung, wenn ein Modul benötigt wird oder auch eine automatische Auflösung der Abhängigkeiten und die Module gleich mitinstallieren.
So kenne ich das z.B. von RPM bzw. bei YaST(openSuSE), aptget(Debian) und auch emerge (Gentoo).

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 05.12.2006 19:32

ja gibt es

nihct das er es alleine auflöst aber das er sagt was er bracht bzw. was er gut findet wenn du es hätest

$help['need'] = 'system/user_info_xl';
=
braucht das modul

und / oder

$help['nicetohave'] = 'modules/fpdf,system/friend,system/smilies,system/user_images';
=
wäre schön wenns da wäre

bin jetzt nur nicht 100% sicher ob das bei der install bereits getestet wird

gesetzt ist das in der opn_item.php



Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 05.12.2006 20:37

stefan schrieb am 05.12.2006 um 19:32:09 Uhr folgendes:

ja gibt es

nihct das er es alleine auflöst aber das er sagt was er bracht bzw. was er gut findet wenn du es hätest

$help['need'] = 'system/user_info_xl';
=
braucht das modul

und / oder

$help['nicetohave'] = 'modules/fpdf,system/friend,system/smilies,system/user_images';
=
wäre schön wenns da wäre

bin jetzt nur nicht 100% sicher ob das bei der install bereits getestet wird

gesetzt ist das in der opn_item.php


Okay, ich habe zum Modul BugTracker folgendes in die opn_item.php hinzugefügt:
$help['need'] = 'modules/project';

Jetzt meckert er ja auch, dass er etwas braucht. Nur da fehlen noch allerhand Informationen wie z.B. ob das angegebene Modul exisitert bzw. wo man das Modul bekommen kann, wenn es sich um ein "3th-Party-Modul" handelt...

Da müsste man eigentlich die $help['need'] bzw. $help['nicetohave'] etwas ausbauen. (Etwas mehr Rücksicht auf 3th-Party-Module)
z.B.

$help['need'] oder auch $help['nicetohave'] als Array mit folgendem Inhalt:
Array (
     [0] => Array (
          ['modulepath'] = "/modules/project",
          ['modulename'] = "Modulname",
          ['moduleversion'] = "1.2",
          ['moduledescription'] = "Beschreibung zum Modul und warum man es haben soll",
          ['moduleimage'] = "http://3th-party-modul.de/bild.jpg",
          ['modulewebsite'] = "http://3th-party-modul.de/irgendwo",
          ['moduledownload'] = "http://3th-party-modul.de/irgendwo"
     [1] => Array (
          ['modulepath'] = "/modules/svn",
          ['modulename'] = "WebSVN",
          ['moduleversion'] = "1.2",
          ['moduledescription'] = "Beschreibung zum Modul und warum man es haben soll",
          ['moduleimage'] = "http://3th-party-modul.de/bild.jpg",
          ['modulewebsite'] = "http://3th-party-modul.de/irgendwo"
          ['moduledownload'] = "http://3th-party-modul.de/irgendwo"
     usw...
}


Wenn das genannte Modul im Verzeichnis existiert, dann soll er die Informationen aus dem genannten Modul extrahieren und diese zum Installieren anbieten.

Nur aus Interesse, wo findet man eigentlich die verarbeitende Klasse?

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 05.12.2006 21:24

ja grundsätzlich geb ich da recht das man noch mehr mitgeben sollte aber ...

wenn du da jetzt hard codiert daten eingibst ist das problematisch da du änderungen innerhalb des zuführenden projektes nicht wirklich erfassen kannst. deshalb würde ich da hard codiert das nicht machen wollen.

wieder aber

dazu gab es schon überlegungen die teilweise auch umgesetzt (testweise) sind

man arbeitet mit ener zentralen struktur also einer externen db an der die informationen gesammelt werden von der dann opn die entsprechenden daten holt das wäre eine möglichkeit besser die einzigste

also dazu benötigten classen und funktioen sind dazu bereits in opn enthalten aber eben noch nicht als zusammenspiel geschaltet

z.zt. war dieses noch nicht nötig da es keine offenen externe module gibt


Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 05.12.2006 22:11

stefan schrieb am 05.12.2006 um 21:24:58 Uhr folgendes:

ja grundsätzlich geb ich da recht das man noch mehr mitgeben sollte aber ...


Jetzt kommt das ABER...

stefan schrieb am 05.12.2006 um 21:24:58 Uhr folgendes:

wenn du da jetzt hard codiert daten eingibst ist das problematisch da du änderungen innerhalb des zuführenden projektes nicht wirklich erfassen kannst. deshalb würde ich da hard codiert das nicht machen wollen.


Öhm, also ich sehe da kein großes Problem. Da du ja sowieso im Modul die Version, Author, etc. angibst, muss halt eben der Autor diese Daten auch anpassen.

stefan schrieb am 05.12.2006 um 21:24:58 Uhr folgendes:

wieder aber


War ja nichts anderes zu erwarten.

stefan schrieb am 05.12.2006 um 21:24:58 Uhr folgendes:

dazu gab es schon überlegungen die teilweise auch umgesetzt (testweise) sind

man arbeitet mit ener zentralen struktur also einer externen db an der die informationen gesammelt werden von der dann opn die entsprechenden daten holt das wäre eine möglichkeit besser die einzigste

also dazu benötigten classen und funktioen sind dazu bereits in opn enthalten aber eben noch nicht als zusammenspiel geschaltet

z.zt. war dieses noch nicht nötig da es keine offenen externe module gibt


Uff, in Sachen externe Datenbank war ich NIE ein Freund gewesen, was passiert wenn die Datenbank ausfällt oder die Verbindung zur externen Datenbank nicht zustande kommt???

Wenn man mit Datenbanken arbeitet, dann soll es eine interne Datenbank sein. Meinetwegen eine Tabelle in MySQL. Diese werden dann bei jedem Update von OPN mit aufgefrischt.

Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 06.12.2006 08:12

OK ist evt. Zu kurz gewesen was ich geschrieben hab also dann mal etwas ausführlicher.

Dein Einsprung war das du Abhängigkeiten lösen wolltest und sofern diese vorhanden auch angaben zum Modul selbst das fehlt.

Fangen wir also grundsätzlich an.

Entwickler X schreibt ein Modul das Teile von Entwickler Y braucht oder gebrauchen kann. X würde also Hard in den Code den Namen des Moduls von Y schreiben. Soweit unkritisch weil der Name sich nicht so ohne weiteres ändert. Aber nach deiner angaben würde er auch eine Download URL angeben. Und ge-nau da fängt es an. Download URLs und Versionen ändern sich ständig. Einig Y könnte da immer die Richtigen Daten haben. Nur wie sollte er die Hard im Code von X fest verankerten Daten denn ändern? Kann er ja nicht. Also ist dieser Weg so schon nicht akzeptabel.

Einzige Lösung: Benutzung einer Externen Quelle um genau diese Daten zuhalten. Also du hat Irgendwo eine Zentrale Stelle in der Y sein Modul Registriert und die Daten Pflegt. X sagt in seinem Code nur dass er Modul Y braucht und erhält dann von der Zentralen Stelle die gewünschten Daten.

Dabei muss man natürlich einiges Beachten damit es eben zu keinem Problem (wie du sagtest) kommt. Diese Zentrale Stelle kann durchaus auch nur ein Knoten sein. So das auch andere Knoten existieren können die sich halt unter einander austauschen. Wenn Y seine Daten nicht mehr Pflegt kann es eine Automatik geben die Y informiert zu sagen was den nu ist und das Y Modul auf obsolet setzt. Natürlich würde das X dann ebenfalls Informiert und sein Modul, ist ja dann auch eingetragen, würde eben so auf obsolet gesetzt werden. Hier läst sich noch viel einplanen bzw. machen.

Von daher sehe ich nicht das Problem in einer Zentralen DB die ja nicht mal so Zentral ist bzw. sein muss.

Nur wie gesagt z.Zt. gibt es da keine extern Freien Module die das Benötigen würden.

Ich hoffe das ganze ist jetzt etwas Klarer.


Zitieren Druckerfreundliche Darstellung nach oben
Freespacer

Registriert: 03.10.2006
Beiträge: 205
Wohnort: Essen


Sende eine Private Nachricht an Freespacer
Geschrieben: 07.12.2006 17:15

stefan schrieb am 06.12.2006 um 08:12:06 Uhr folgendes:

Entwickler X schreibt ein Modul das Teile von Entwickler Y braucht oder gebrauchen kann. X würde also Hard in den Code den Namen des Moduls von Y schreiben. Soweit unkritisch weil der Name sich nicht so ohne weiteres ändert. Aber nach deiner angaben würde er auch eine Download URL angeben. Und ge-nau da fängt es an. Download URLs und Versionen ändern sich ständig. Einig Y könnte da immer die Richtigen Daten haben. Nur wie sollte er die Hard im Code von X fest verankerten Daten denn ändern? Kann er ja nicht. Also ist dieser Weg so schon nicht akzeptabel.


Hm... Da gebe ich dir nur teilweise recht.
Ist alles schön und gut. Aber vergisst du nicht etwas entscheidendes? Wenn Modul X von Modul Y die Version 1.1 benötigt. Wie du so schön sagst, dass Modul Y hat seine Version aber 2.0 erhalten. Dann sagt es doch im Prinzip aus. Das Modul X bisher mit Modul Y Vers. 1.1 einwandfrei läuft, aber Modul Y mit Version 2.0 nicht angepasst wurde (Braucht nur ein Funktionsname im Modul Y sich ändern). Daher auch Hardcoded wegen der Kompatibilität unter den Modulen, weil der Entwickler von X weiß, dass sein Modul X mit Modul Y Vers. 1.1 läuft.

stefan schrieb am 06.12.2006 um 08:12:06 Uhr folgendes:

Einzige Lösung: Benutzung einer Externen Quelle um genau diese Daten zuhalten. Also du hat Irgendwo eine Zentrale Stelle in der Y sein Modul Registriert und die Daten Pflegt. X sagt in seinem Code nur dass er Modul Y braucht und erhält dann von der Zentralen Stelle die gewünschten Daten.


Wäre eher für den Entwickler gedacht, wenn das NEED- oder HAVETONICE-Modul sich geändert hat, dass automatisch eine Mail an den Entwickler geht sein Modul doch bitte anzupassen. Aber was mit dem Hardcoded angeht, habe ich schon dazu etwas geschrieben.

stefan schrieb am 06.12.2006 um 08:12:06 Uhr folgendes:

Dabei muss man natürlich einiges Beachten damit es eben zu keinem Problem (wie du sagtest) kommt. Diese Zentrale Stelle kann durchaus auch nur ein Knoten sein. So das auch andere Knoten existieren können die sich halt unter einander austauschen. Wenn Y seine Daten nicht mehr Pflegt kann es eine Automatik geben die Y informiert zu sagen was den nu ist und das Y Modul auf obsolet setzt. Natürlich würde das X dann ebenfalls Informiert und sein Modul, ist ja dann auch eingetragen, würde eben so auf obsolet gesetzt werden. Hier läst sich noch viel einplanen bzw. machen.


Die Datenbank soll das Modul X, dass obsolet ist, dass andere Modul Y auch ausschalten? Da muss man wirklich Versionsprüfung betreiben, dann können unter umständen auch alte Modul laufen, wenn diese untereinander gebrauchen werden, aber nicht von einem Modul, der das neuste vom neusten Modul benötigt.

stefan schrieb am 06.12.2006 um 08:12:06 Uhr folgendes:

Von daher sehe ich nicht das Problem in einer Zentralen DB die ja nicht mal so Zentral ist bzw. sein muss.


Hä? Eine zentrale Datenbank, die nicht zentral ist?! Äh.... Meinst du etwa eine Peer2Peer-Datenbank???

stefan schrieb am 06.12.2006 um 08:12:06 Uhr folgendes:

Nur wie gesagt z.Zt. gibt es da keine extern Freien Module die das Benötigen würden.


Doch wird es demnächst geben.

stefan schrieb am 06.12.2006 um 08:12:06 Uhr folgendes:

Ich hoffe das ganze ist jetzt etwas Klarer.


Klar, bis auf einige Sachen.


Gruß

Sebastian


Zitieren Druckerfreundliche Darstellung nach oben
stefan
Beiträge: 2435
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 07.12.2006 18:03

Freespacer schrieb am 07.12.2006 um 17:15:59 Uhr folgendes:


Ist alles schön und gut. Aber vergisst du nicht etwas entscheidendes? Wenn Modul X von Modul Y die Version 1.1 benötigt. Wie du so schön sagst, dass Modul Y hat seine Version aber 2.0 erhalten. Dann sagt es doch im Prinzip aus. Das Modul X bisher mit Modul Y Vers. 1.1 einwandfrei läuft, aber Modul Y mit Version 2.0 nicht angepasst wurde (Braucht nur ein Funktionsname im Modul Y sich ändern). Daher auch Hardcoded wegen der Kompatibilität unter den Modulen, weil der Entwickler von X weiß, dass sein Modul X mit Modul Y Vers. 1.1 läuft.



nein nicht zwingend

das problem ist klar und muss gelöst werden, dazu gibt es 2 möglichkeiten. mit allen 3 möglichkeiten wir in opn "gespielt"

1) Versions Controll System; jedes Moul weiss von wann bis wann es arbeitet besser das zu benutzende Modul sagt wann es denn nicht mehr geht. Das kann man durch interne stukturen und eine strikte Versionsvergabe erreichen.

2) feste klassen einsprünge und erreignis punkte sowie registrierte funktionen

ich hoffe die stichworte reichen sonst muss ich es ausführlicher machen.

Freespacer schrieb am 07.12.2006 um 17:15:59 Uhr folgendes:


Die Datenbank soll das Modul X, dass obsolet ist, dass andere Modul Y auch ausschalten? Da muss man wirklich Versionsprüfung betreiben, dann können unter umständen auch alte Modul laufen, wenn diese untereinander gebrauchen werden, aber nicht von einem Modul, der das neuste vom neusten Modul benötigt.



sicher wobei das nur selten auftretten kann da sofern 2) von oben zu 100% umgesetzt ist. denn dann ist jede höhere version zu der alten kompatibel


Freespacer schrieb am 07.12.2006 um 17:15:59 Uhr folgendes:


Hä? Eine zentrale Datenbank, die nicht zentral ist?! Äh.... Meinst du etwa eine Peer2Peer-Datenbank???



nein; DNS kennst du? ist auch ne "Art" Datenbank. Its die Zentral? Ja; Ist sie zwingend! Zentral? Nein


Zitieren Druckerfreundliche Darstellung nach oben
sortieren nach

Hilfe anzeigen
Hilfe anzeigen
Vorheriges Thema:  Kleine Frage zu SVN
Nächstes Thema:  Sidebox + Ajax-Technik

Gehe zu:

Benutzername:
 
Sicherheits-Code
Sicherheits-Code
Neu laden