View Single Post
  #12  
Old 12.06.2009, 04:36
BEN BEN is offline
Vacuum Cleaner
 
Join Date: May 2009
Posts: 18
Default Dito

Hallo Jiaz,

ich setze jetzt den eigentlichen Nachtrag, mal voran,
weil es scheinbar doch notwendig ist, nochmal klar zu machen:

Ich schreibe hier, weil ich Verbesserungsvorschläge machen will,
nicht um Dich hier im Forum vorzuführen oder mich zu produzieren,
Vorschläge oder Anregungen sind (oder waren) ausdrücklich
erwünscht, nur darauf gehe ich ein.
Mir geht es nicht darum wer hier den meisten Applaus auf
seiner Seite versammelt, - ich will Dir/Euch/dem Projekt helfen.
Da ist weder Gegnerschaft noch Provokation oder der gestörte
Bedarf hier sinnlos herum zu nerven.

Mit fast jeder Deinen Gegenantworten lieferst Du auch gleich den
Beleg der Sinnhaftigkeit meiner Anregung mit, statt sie zu widerlegen,
ich weiß nicht, ob Dir das nicht auffällt, oder es Dir egal ist, oder oder...

Du hast sowas noch nicht gemacht, das sehe ich an Deinen Antworten,
Du bist sicher noch recht jung, kannst es also auch kaum kennen,
aber ich habe nicht den Eindruck das Du den Umfang dessen was
ich anrege, und warum ich es dringend empfehle, wirklich
nachvollziehst.
Mir geht es um die Sache, ich versuche es jetzt letztmalig:




Hallo jiaz,

nochmal eine Rückmeldung,



plugins und decrypter können aktuallisiert werden ohne das das hauptprogramm ein update erfährt! Dies wurde schon seit 0.3 ncohwas so gemacht!


> Echt? Hier funktioniert es nicht, als ich versucht habe, die letzte .04 version mit neuen decrypter plugs etc. Zu ergänzen, lief es nicht, error beim updaten.
Die updates der module/plugins funtionieren nicht wahlweise, es wird eine ganze liste von einzelteilchen im block upgedatet und zumeist 1 fehler behoben und mindestens 1 neuer eingebaut, - bis es dann mehr so nach dem versuch und irrtum-prinzip, irgebndwann mal doch zumindest wieder benutzbar ist. Das geht dann jeder menge leuten mächtig auf den sack und macht euch mächtig nachbastelbedarf.
Also für alle ärgerlich:
Unbenutzbares programm nach update wegen notwendigem erneuern eines decrypter plugs.

Edit by Jiaz: plugins und decrypter haben in der regel keinen einfluss auf die funktionsfähigkeit des jd, jedoch kann es hier vorkommen das sich interne api aufrufe ändern/wegfallen/neu dazu kommen und dadurch probleme gibt (wie bei dem notfall update des rs plugins)
EDIT by Ben:
Die Threads hier sind doch voll von Bug-Reports, - auch Plugins und Decrypter haben regelmässig Einfluss auf die Funktionsfähigkeit des JD.
Ein modularer Aufbau (Einzelmodule auf die der Core zugreift, die bei defekt nicht das ganze Programm - oder weil hält konsequent als Einzelbausteine konzipiert, nicht andere Module - mitreissen können) ist doch grade bei häufigem Update-Bedarf von Einzelmudulen absolut sinnvoll.
In den Einstellungen sind doch schon alle Host-Module aufgelistet für den Updatemanager braucht es dort nur noch zwei Spalten "Nach Update suchen" oder "(immer) alle updaten", dann ist nur noch der Unterbau wie beschrieben umzusetzen, und schon kann der Anwender genau nach seinem Bedarf, ohne die ständigen mit 'reingeballerten Extras updaten. Das was muckt wird aktualisiert, das was läuft wird erstmal nicht angetastet.
Das ganze "Juchuh rapidshare geht wieder, - aber oh Mist, Reconnct ist nun futsch" wäre dann erledigt.



Bei mir wird mit der .06 nun decryptet, aber dagegen der router nicht erkannt bzw. Reconnect in endlosschleife.
Eigentlich schon recht blöd, oder?

Edit by Jiaz: ist ein fehler meinerseits, da ich gesten nacht um kurz nach 3,4 Uhr nen bug fixen musste und bei der größe von jd das einfach nicht so zu überblicken ist.
EDIT by Ben:
Genau: spätnachts und schon völlig kaputt auch noch Bugs zu fixen ist schwierig und fehleranfällig, - wenn das Ding zu komplex ist, - weil eben nicht modulweise gefixt werden kann. Monolith statt konsequentem Baukastenprinzip kostet irre viel Zeit.



Aber wen sich nunmal zuviel an schnittstellen und funktionen ändern, dann geht es nunmal nicht anders als ein komplett update zu machen! Und nein, wir haben einfach nicht die manpower x-kombinationen von jd versionen und plugin versionen zu unterstützen!

> Es geht nicht um x-kombinationen, es geht darum:
Wenn ihr grosse änderungen macht, wie jetzt von 0.4 auf 0.5, dann wäre es halt schon von bestechender vernunft, wenn das ältere programm noch für eine übergangszeit, - also solange bis das neue nicht mehr an allen ecken zappelt, - weitergepflegt würde.

Edit by jiaz: das weiterpflegen von der altern version kostet einfach zuviel zeit und die haben wir nicht, wir können nicht jede x beliebige funktion auch in den alten jd reinbauen und in den neuen.
EDIT by Ben:
Bei modulweisem Konzept mit fixen (aber immer durch neue, weitere, ergänzbare) Schnittstellendefinitionen (Andockstationen), müsste z.B. nur die Captcha-Routine innerhalb des Captchamoduls dem aktuellen Neubedarf angepasst werden UND DAS WAR MEIN PUNKT 2: bei selektiver Update-Möglichkeit (nur Captcha-Modul, weil es auch nur dort hakte) ist die Chance sich vorhandene Funktionen zu zerschiessen nahe Null, tritt es aber doch auf, dann ist es leicht fixbar weil alles überschaubarer.



2.) eine derartige modulare aufbauweise geht einfach vom prinzip her nicht, da sich jd interna zu schnell und zugroß ändern, aber arbeiten in diese richtung sind auch schon lange in gange

> das geht vom prinzip immer, es kommt auf die konzeption an.
Und wenn es vom prinzip her nicht ginge, wären arbeiten daran wohl auch sinnlos... ;-)

Edit by jiaz: schnittstellen sind nicht nur von plugin zu jd sondern auch internen apis (cookies, browser, captcha, filesystem, usw) ändern sich!
EDIT by Ben:
Ja, ich weiß, darum eben VORHER Schnittstellen zum Andocken der Module definieren. Die Schnittstelle (die "Andockstation" des Moduls) ist dann die Sicherheitsschleuse, das ist ja das clevere daran. Fehler sind leichter zu orten (einzugrenzen) und dadurch natürlich auch zu fixen.
Es wäre vielleicht nötig, dir das mal in der Praxis zu zeigen, aber die Zeit habe ich nicht, vollzieh es mal gedanklich nach und mach evtl. nen Probelauf.



3.) schnittstellen und co ändern sich im jd zu oft als das wir sie statisch halten können!

> Modul-_schnittstellen_ können lange bleiben, die interne modul-funktion muss sich ja nur an änderungen anpassen, - das ist aber im modul, nicht an der schnittstelle.
Das genau ist es doch!
Ein beispiel zur verdeutlichung: Photoshop plug-ins konnten (am mac zumindest) von der version ps 3 bis ps 7 durchgängig benutzt werden, weil die schnittstelle ("api" sozusagen) gleich blieb, für neue funktionen wurde halt eine zusätzliche schnittstelle implementiert, - somit funktionierten alte und robuste plugs weiter und neue noch dazu.
Also: Wenn dann eine funktion im plug des jd, etwa captcha, notwendig angepasst werden muss, dann hast das nur mit dem captcha-modul intern zu tun (neue bildchen auswerten etc.), die schnittstelle im programm muss sich überhaupt nicht ändern (nur das ergebnis der auswertung wird dort an der schnittstelle abgegriffen und dann wie gewohnt im programm weiterbearbeitet.
Wenn das nicht klar ist, frag einfach nochmal nach. Es liegt halt im (und auch am) grundkonzept, wenn das sauber ist, ist das programm super skalierbar und sicher aktualisierbar.

Edit by jiaz: dies ist bei jd nicht möglich da man nicht die pluginstruktur von jd mit der eines andren programmes vergleichen kann....jd plugins nutzen stark jd interna, während bei andren produkten jedes plugin dann xfach diese funktion selbst mitführen muss (erhöhtes fehlerpotential und mehr aufwand zur pflegung)
EDIT by Ben:
Das meint man zuerst, es ist aber genau umgekehrt.
Ich dachte Photoshop wäre ein ganz gutes, weil allgemein bekanntes Beispiel. Ich erwarte auch nicht, dass ein Scharfzeichnungzeichnungs-Filter an JDownloader andocken kann und dort die Downloadliste etwas schärfer macht ;-)
Natürlich ist durch den Einsatzzweck (die Aufgabe) des Programms, das Modul, die Andockstation, und die Aufgabe, immer anders. Die Struktur, also das Grundkonzept aber immer dasselbe.
Programm X wird mittels Modul X (Filter...) über Schnittstelle Z angesprochen, keine Kommunikation ausserhalb der Andockstation zwischen Programm und Modul. Bei Bedarf kein Herumgebastel im Programm falls das Modul nicht läuft, oder andersherum, - sondern die bislang sauber funktionierende Andockstation, wird, wenn deren Funktionsdefinition nicht mehr ausreicht, durch eine neue Andockstation ergänzt. Die "Abgreifroutine" innerhalb des Programms bleibt unangtastet, da andere Module ja weiter funktionieren müssen, bei Ergänzungsbedarf (neue Funktion durch neues Modul) wird das alte Weiterlaufen gelassen, - sonst müsste jedes der anderen Module, wegen eines einzigen neuen Moduls (mit den gewünschten erweiterten Funktionen) umgeschrieben werden.
Beim alten Monolith-Ansatz, ist die wechselseite Verzahnung zu hoch.
Beispiel Betriebssystem Windows, da passiert es ja durchaus mal, das nach "Update" oder "Bugfix" z.B. der Drucker dann ja echt wieder super angesprochen werden kann, nur, hoppla, nun geht faxen nicht mehr.
Alles Folge von zusammengewobenen unklar definierten Schnittstellen zum Kern hin.
Wenn der Kern nicht einfach skalierbar ist, weil Andockplätze nicht sauber definiert und nicht klar getrennt sind, sondern sich unnötigerweise wechselseitig beeinflussen.
Noch ein Beispiel: Es wäre problemlos moglich, eine Textverarbeitungsprogramm inklusive MP3 Player und Movieplayer zu coden, sowas macht aber höchstens das kleine Fritzchen, weil jeder einsieht, dass das nur schwierig zu handeln wäre und in der Verbindung Nachteile liegen.
Also wird nach Aufgaben getrennt und zwei/drei Programme (Anwendungen, Applikationen) entstehen.
Aber innerhalb der Programme wird so ein Unsinn noch durchgezogen, also Teilbereiche zusammengeballert.
Verständlich was ich meine?



4.) klar kannst du das umstellen, siehe *update only on manual request*, hier macht sich jd standalone und ist nicht mehr auf updates angewiesen....oder du schaltest es ab und dann lädt jd halt plugins on the fly (da deren schnittstelle wesentlich länger stabil sind als der rest) und nur wenn nötig muss man updaten!

> Was heisst "on the fly"? Dynamisch zur laufzeit? Also hier jedenfalls funkioniert das nicht. Wenn ich nicht das update mit addons (ausser den abgewählten) router, decrypter, etc. Durchführe, wird halt irgendwann nichts mehr decryptet oder dlcs nicht dekodiert, das ist doch schon der leidige status bei jd mittlerweile. - und bringt ja wie bekannt die andauernden probleme: Eines wird gefixt woanders ein nagelneues problem hereingeupdatet.
Das ist völlig unabhängig von der einstellung updates (für das programm) manuell oder nicht so, - die addons, decrypter, etc.- updates im block verursachen dass, - und die sind ja nun natürlich recht häufig nötig, aber halt nicht wahlweise definierbar.

Edit by jiaz: es bringt keinen vorteil einzustellen welche plugins geupdated werden sollen oder nicht, dies gibt nur einen erhöhten support aufwand und fehlerwahrscheinlich seitens des users (dann musst bei jedem supportanfrage erstma fragen und erklären wie er rausfindet welche plugin version er hat)
EDIT by Ben:
Ich denke die Vorteile habe ich mittlerweile dargegelegt, jedenfalls habe ich mir wirklich Mühe gegeben.
Ja, etwas erhöhter Supportaufwand ist ganz klar in der Umstellungsphase gegeben, - wird aber später durch Möglichkeit der Selbsthilfe deutlich aufgewogen, da "der Kunde" sich durch die höhere Transparenz leichter selbst helfen kann, er muss dann nur bei den Majorupdates alles laden, ansonsten, nur nach seinem konkretem Bedarf.


Am schluss: Klar ist uns bekannt das saubere schnittstellen und co hilfreich und besser wären, aber genau darauf arbeiten wir ja hin, aber jd ist und bleibt einfach eine groß baustelle da sich im captcha, oneclick hoster und co einfach zuviel verändert.

> naja ist eine sache der prioritäten, bei den derzeitigen kommt halt viel frust heraus. Eine 04. Version mit einpflegbaren notwendigsten updates wie etwa der captcha "module", etc., wäre da für alle sehr sinnvoll.
Selbst wenn 0.5 bei einigen glatt läuft, ist es doch bei vielen halt nicht so.
Ich habe jetzt seit der version 0.5 nur eine einzige version gehabt die funktionierte (aber mir von der optik/interface-logik trotzdem nicht gefällt) die nun aber auch schon wieder nichts lädt, (freeze) und keine einzige der 04. Versionen kann die gesicherten dlcs lesen bzw rapidshare decypten.
Edit by Jiaz: wenn du plugin updates nicht abschaltest ist klar das es zu problemen kommen kann, eine standlone ist vorraussetzung wenn du auf einer speziellen version bleiben willst!
Alltversion läuft nicht , neuversion auch nicht, klassisches schachmatt - stunden sinnlos mit tests vertan - und wie gesagt ärgerlich und vermeidbar.

EDIT by Ben:
Privat nutze ich Macs, dort startet der Standalone beim ersten Mal immer mit "lade benötigte Dateien nach" o.ä., was dann reingeknallt wird ist bei seinen ganzen wechselseitigen Abhängigkeiten "natürlich" völlig untransparent (...ja, trotz Log).


Wie wird das eigentlich für die leute die kaum englisch sprechen wie zb. Etwa aus asien, russland oder so sein?
- die denken doch ständig wenn mal wieder was nicht mehr geht, sie hätten was nicht so recht verstanden, und verballern dann stunden mit trial-error und knallen das programm dann irgenwann in den müll, - und das ist auch bei freeware schade und eigentlich unnötig.

Edit by Jiaz: klappt eigentlich ganz gut im supportchat oder per email
EDIT by Ben:
Hört sich prima an.


Freundliche grüße
ben


EDIT by Ben:
Nachtrag zum Nachtrag:
Ihr seit jetzt bei 0.6, - je komplexer das Ding wird, desto mehr könnte euch das hier Vorgeschlagene helfen. Es sind schon viele OpenSource Projekte wieder eingestampft worden, weil "kein Durchkommen mehr war" die Ursprungsentwickler haben dann irgendwann eingepackt, und Nachfolger sind auch nicht bereit gewesen in anderer Leute Code herumzuschnüffeln und sich dort rein- und durchzuwursteln.
Wie gesagt, meine Anregung ist positiv, im Sinne des Projektes gedacht.
Reply With Quote