Softwarekatastrophen - Mozilla Firefox

Mozilla Firefox

Ich bespreche hier den Firefox, weil die Liste der Fehler des Internet-Explorers mit seiner nicht möglichen Anpassbarkeit beginnt, also jede Besprechung von Fehlern keinen Sinn ergibt. Man kann das zwar prinzipiell mit etwas VB-Code selber machen, aber irgendwie kann das doch wohl nicht die Lösung sein, oder?

Den Firefox kann man zwar wunderbar customizen, aber da frage ich mich wirklich, wieso einige Dinge im Firefox derart hahnebüchen implementiert wurden. Geradeso als hätte man sich bei Microsoft abgesehen, wie man es nicht macht (nämlich monolithisch in einer gigantischen Implementierung anstatt Unix-Like locker flockig mit einer Zillion von Interfaces die eigentlich eher nix tun, aber zusammen ein unschlagbares Framework bilden).

Bitte richtig verstehen

Ein Browser ist ein Tool. Dieses Tool muss Out-of-the-box so daherkommen, dass jeder NormalDAU es vollständig verwenden kann, ohne dass er dadurch seine Privatsphäre verliert. Der Trick nun ist, FF kriegt Marktanteile. Und deshalb bekommt er Marktmacht.

Wenn er also per Default alles abdreht müssen die Webseiten anfangen, den Surfern zu erklären, wie sie den Mist wieder andrehen müssen! Dabei aber müssen sie die Leute aufklären.

Ein guter Browser also kommt absolut minimalistisch daher. So dass er NICHT KANN WAS IHM NICHT ERLAUBT WURDE. Und genau das Erlauben muss so einfach sein, dass jeder NormalDAU das dann bewerkstelligen kann ohne eine Anleitung zu lesen.

Und ja, wenn das bedeutet, eine vorher nie geöffnete Webseite wird dann mit 20 Warnleisten umringelt die alle mitteilen, was von der Seite geblockt wurde (JavaScript, Flash, Cookies, Java, Werbebanner, Webbugs, deep-foreign-Framsets, etc.) dann kommen nicht nur die Surfer drauf, dass die Seite wohl ein vollkommen durchgedrehter Designer gemacht haben muss und man besser die Finger davon lässt. Und die verantwortlichen Designer werden das Problem sehr flugs im Griff haben.

Wenn der Browser aber derart unverantwortlich daherkommt wie der FireFox (vom Grauen namens IE möchte ich überhaupt nicht reden) dann ist das für mich eine Softwarekatastrophe.

2007-05-24 Wörterbücher nachladen

Habe gerade das Deutsche Wörterbuch nachgeladen, weil ich während ich etwas tippte feststellte, dass ich das Wörterbuch brauche. Und was kommt?

"Firefox neu starten um Wörterbuch zu aktivieren"

Welchen Entwickler vom FF darf ich dafür bitte windelweich prügeln? Tatsache ist, ein Wörterbuch nachzuladen darf niemals einen Neustart benötigen, denn wenn man es nachlädt ist man mitten im Tippen und kann eben jenes genau nicht: Den Browser neu starten und alle Eingaben verlieren.

Speicher-BUG auf 32 Bit Maschinen

Firefox 1.5.0.1 geht bei mir ins "Nirvana", wenn er auf's Netz zugreift. Es kommt, laut Windows "Keine Rückmeldung". Ziehe ich das Ethernetkabel raus(!), erscheint ein "Proxy Fehler" und FireFox belebt sich. Aber nur kurz, danach kommt eine Schutzverletzung und er ist aus dem Speicher.

Ich habe mehrfach erlebt, dass FireFox 2 GB(!) RAM und mehr belegt.

Es ist unerträglich dass FireFox.exe nur einmal im Speicher sein kann. Warum kann ich nicht 400 FireFox.exe starten wenn ich will, so dass wenn 299 davon ein paar Stündchen oder Tage "abschnarchen" bis sie ihre Verbindungen wieder sortiert haben ich weitersurfen kann?

Hinweis: Bei FF 2 (ich habe keine Idee welcher es ist, bei mir fehlt das Hilfsmenü weil ich es nicht haben will, man kommt dann aber eben nicht an die Info, welcher FF es ist, noch so eine kleine Katastrophe) ist der Bug ist immer noch da. Der Browser bricht einfach so zusammen wenn er an die 3 GB-Grenze stößt oder ihm die Resourcen ausgehen weil er gleichzeitig zu viele IMG-Tags anzeigen will (bei mir oft ein paar Tausend in einer Seite. Wieso nicht? Meine Maschinen sind gut ausgestattet!). Oft, aber nicht immer, kann man die Session hinterher weiterführen, gar nicht selten aber ist die Session hinterher schlicht nicht mehr aufnehmbar.

Der grundlegende Fehler ist immer noch, dass man nur einen einzigen FireFox starten kann. Könnte man 10 FF a 512 MB RAM starten gäbe es kein Problem. So aber versucht das System 5 GB für einen Prozess zu allokieren, auf einem 32-Bit-System mit maximal 4 GB Adressraum. Das kann ja nicht gut gehen, ist also ein grundlegender Designfehler von FireFox!

Es ist möglich mehrere FF zu starten, wenn man sich mal durch den Wust von Anleitungen durchgeschlagen hat, und zwar wie folgt:
SET MOZ_NO_REMOTE=1
start firefox.exe -P "Profilname"
Man muss dabei die Profile durchswitchen, oder aber über den Profilmanager gehen. Warum? Keine Ahnung. Ist aber so. Wenn man das tut verliert man aber die lebensnotwendigen Extensions. Warum? Keine Ahnung. Ist aber so.

Damit es nicht ganz so schlimm wird, kann man die Extensions global installieren. Das geht dann so:
firefox -install-global-extension "X:\pfad\zur\erweiterung.xpi"
Natürlich ist das ziemlich umständlich und schlampig implementiert worden. Warum? Keine Ahnung. Ist aber so.

(Gefunden via www.firefox-browser.de/wiki/Hauptseite)

Das nenne ich eine ganz klare Softwarekatastrophe. Ein Browser muss von jedem Normaldeppen mehrfach startbar sein so dass er in getrennten Speicherbereichen abläuft. Einfach weil die heutigen 32 Bit-Maschinen nur 2 GB virtuellen Adressraum haben und deshalb mehrere kleinere Browseranwendungen (Stichwort: Web2.0 und Ajax) allzuleicht über diese Beschränkung hüpfen. Außerdem zieht eine Schutzverletzung dann nicht gleich alle Browser-Fenster ins Nirvana.

Himmel, nur Word starten bedeutet heute ja schon 300 MB RAM. Starten wir es 10 Mal und wir habe 3 GB. Im Gegensatz zu nativen Apps aber teilen Ajax-Anwendungen sich keinen Speicher sondern belegen ihn jeder für sich. Und schwupps geht der Browser ins Nichts, weil er keinen Speicher mehr bekommt, weil er keinen mehr bekommen kann, weil er nur einmal gestartet wird und dieser eine Prozess keine 3 GB allokieren kann (bei 2 GB ist schluss, mehr geht nur in Ausnahmefällen bzw. mit 64 Bit Systemen).

Es ist noch schlimmer als von mir erahnt!

Wenn man das hier macht, kann man keine Links mehr aus anderen Anwendungen öffnen. Der Grund ist: Es kommt immer der Profilemanager hoch (da ja "MOZ_NO_REMOTE" nicht zugelassen ist) und somit kann man sich nur endweder zillionen verschiedene Profile auch noch gleich mehrfach(!) anlegen (ich brauche aber nur ca. 15 verschiedene, alle haben eine andere Funktion, das eine z. B. ist an TOR gebunden, das zweite an I2P, das dritte ist nur Lokal und kann nicht ins Internet, das vierte geht immer direkt, das fünfte immer über den Proxy, das sechste geht über den Debugging-Proxy, und so geht das halt weiter).

Irgendwie ist das mit dem IE viel einfacher. Man setzt den Haken "Jedes Fenster in einem eigenen Prozess starten" und ich habe genau das, was ich eigentlich mit dem FF will. Ja, ist natürlich nett und brauchbar, dass mich der FF derart disjunkte Setups starten lässt. Aber an sich kam ich vorher mit Opera, Seamonkey, Lynx, FireFox und IE auch ganz gut zurecht (machte 5 verschiedene Profile). Dass man aber jede Möglichkeit verliert, an ein bereits offenes Fenster über den Profilmanager neue URLs zu senden ist mehr als unerträglich!.

OKOK, ich werde das jetzt so lösen: Noch ein Profil ("send"). Dieses hängt das URL nur in eine Datenbank(!), das dann der Greasemonkey im richtigen Profil (per Klick) importieren kann. Ja sind die FF-Macher eigentlich noch bei Trost?

Also nochmals: Der Profilmanager ist OK, aber er soll genau das machen: Profile managen. Es muss weiterhin möglich sein, in EINEM Profil MEHRERE Firefox-Prozesse zu starten!

Übrigens hat der IE auch einen Profilmanager: Geht per Windows+L, man schaltet einfach auf einen anderen User um! Trotzdem kann ich in jedem Profil mehrere IE-Prozesse haben.

Also nochmals: FF in nur einem Prozess pro Profil ist wie ein Reifentransporter mit nur maximal einem aufgeblasenen Reifen. Will man mehr als einen Reifen (inklusive der mit denen man fahren will) aufpumpen, dann muss man dafür das Lenkrad abbauen. Sobald man es wieder anbaut, werden erst alle Reifen platt, und anschließend kann man wieder nur maximal einen Reifen aufpumpen.

Adblock: Werbeblocker

Der Grund warum man IE nicht mehr verwenden kann ist der fehlenende Adblock. Meine Devise ist: Wer sich bewegt, verliert. Damit hat bei mir jede Form von Werbung, die irgendwelche Pixel auf meinem Bildschirm rumschiebt, sofort und instant verloren. Grundlage meines Denkens ist, es verändert sich auf dem Bildschirm nur dann etwas, wenn es absolut notwendig ist. Flashige Werbung aber ist es nicht. Und sie verbraucht unnütz CPU und Bandbreite (merke: Grundlage meines Denkens ist ein VT100-Terminal bzw. eine X-Window-Station an einer 9,6 kBit Leitung, und daran wird sich niemals etwas ändern. Eine unnötige Anwendung die diese Grundlage nicht einhält wird abgeschaltet).

Adblock ist grundsätzlich sinnvoll implementiert und leicht zu verwenden. Wo ist die Katastrophe?

Bei den Filtern. Meine Filterliste ist inzwischen unglaublich groß! Das Problem ist, die richtige Filterliste zu finden, wenn man sich mal vertippt hat! Also würde ich mir folgende Anzeigen wünschen:

  1. Liste aller Filter nach Zeit sortiert an der sie eingetragen wurden.
  2. Liste aller Filter nach der Zeit, als sie das letzte Mal benutzt wurden.
  3. Liste aller Filter die zu den aktuell direkt offenen TABs gehören (und zwar alle zusammen).
  4. Liste aller Filter die auf die aktuell angezeigte Seite zutrifft, inklusive aller Unterblockierungen die evtl. nicht angezeigt werden.
Ja, scheiß viel Arbeit zu Implementieren ist vor allem der letzte Punkt, da FF die Seite vollständig Rendern muss um herauszufinden was da geblockt wird.

Aber rein technisch ist Adblock eine der besten Dinge im Firefox! Es ist für mich absolut unverzichtbar (ich wäre beim IE geblieben wenn es nicht Adblock gäbe).

Noscript: Java und Javascript

Es gibt die NoScript Extension für FireFox, die ansatzweise das macht, was ich hier beschreibe. Sie ist extrem hilfreich und absolut notwendig, aber leider von der Usability noch nicht ganz so weit wie ich es gerne hätte.

Vorbild IE: Im IE hat man 2 Zonen, die eine, die nix darf (sicherheitshalber) und die andere, die alles darf. Eine 3 Zone fehlt im IE, ich hätte etwa noch 500 weitere Zonen gebraucht. Offensichtlich sind Zonen der falsche Ansatz. (NoScript kennt auch nur "ein oder aus", aber nicht "nur das ein, und alles andere aus".)

Im FF aber gibt es folgerichtig die Zonen nicht. Der Nachteil ist, man kann Java und JavaScript global ein- und ausschalten. Das ist kompletter Hirnriss! NoScript erlaubt nur den vollständige Ein oder Ausschalten aller Scripte für Seiten. Ich hätte gerne noch die Möglichkeit, individuell bestimmte JavaScript-Teile aktivieren zu können, aber Flash etc. abzuschalten oder umgekehrt.

Genau das, was Adblock macht, würde ich mir für Webseiten wünschen:

  • Defaultmäßig werden Plugin grundsätzlich geblockt! (Das tut NoScript zuverlässig.)
  • Immer, wenn die Webseite ein Plugin verwendet, erscheint unten in der Statusleiste (und zusäzlich als platzierbares Icon in der Toolbar falls man die Statusleiste nicht mag) ein Icon. (NoScript ist immer sichtbar.)
  • Bis zu 4 populäre Plugins (JavaScript, Java, Framesets/IFrame/Bilder, Wählbar) erscheinen direkt, nichtpopuläre sammeln sich unter einem 5. Icon.
  • Die Plugins kann man dann schnell und einfach duch einen Doppelklick auf das Icon aktivieren (bzw. aus einem Popup auswählen) bzw. deaktivieren. Dabei gibt es folgende Einstellungen: Default (aus), Momentan an, Jetzt immer an, Jetzt immer aus, Momentan aus (NoScript hat ein anderes Konzept)
  • Alternativ wird ein Screen a la Adblock aufgebaut, mit dem man den Default anhand von RegExp einstellen kann, genau so wie bei Adblock. (Das kann NoScript, nur unterscheidet es die Plugins nicht.)
Allerdings sollte es 2 Regexps geben die immer als Bundle untrennbar zusammengehören (wenn das zweite gilt und das erste nicht, dann gilt keines):

  1. Die Seite auf der das Plugin erscheinen darf (URL von dem die Seite geladen wurde), sowie
  2. die Wildcards auf die vom Plugin aus zugegriffen werden darf (bei Java, woher das Applet stammen darf, bei JavaScript, wohin das JavaScript kommunizieren darf um z. B. GIFs nachzuladen).
Es sollte einen "DAU-Button" geben, der aussagt "gesamter Host", womit automatisch alles unterhalb des Host erlaubt wird:
http://www.domain.tld/*

Es soll dabei 2 Einstellungen geben: ALLOW und DENY, wobei DENY stärker bindet.

Dazu kommen noch umstellbare "Defaults" für die Plugins, z. B. Global "aus" für Java und Javascript oder "nur von derselben Domain" für Framesets und Bilder.

Bei Plugins hilft eine Wildcard nicht. Java-Applets beliebiger Anbieter kann man prinzipiell von jeder Seite aus einbetten. Von fremden Seiten "mißbrauchte" Applets sind keine Seltenheit, also ist es notwendig, nicht nur die Applets einzeln zuzulassen, sondern auch einschränken zu können, von wem sie benutzt werden sollen (das wird Microsoft niemals verstehen, ein Grund warum Microsofts Sicherheitsbemühungen immer scheitern werden).

Prinzipiell würde ich (wegen XSS-Attacken) sogar noch einen Schritt weitergehen, und selbst für den Referrer eine Wildcard sehen (sprich die Seite, die die Seite aufrief). Aber vermutlich werden die Leute das niemals verstehen.

Ausserdem sollte eine programmatische Schnittstelle im FF sein, die man leicht erweitern kann, so dass der Default automatisch bestimmbar ist. Die Idee dahinter ist eine "Junkbuster"-Seite über die man die passenden Regeln für eine Seite automatisch bestimmen lassen kann.

Ach ja, wenn man genau hinsieht, wird man feststellen, dass mit dieser Methode Adblock selber weitgehend der Vergangenheit angehört. Das Framework enthält fast alle Möglichkeiten, Adblock ermöglicht nur eine komfortablere Verwaltung.

Alles bei Adblock geschriebene gehört also hier nochmals hin.

Noch etwas:

Chrome ist ebenfalls ein Plugin in meiner Ansicht! Das bedeutet, dass auch Chrome-Zugriffe von Webseiten aus mit dieser Methode erfasst werden müssen. (Wodurch die Liste der Seiten die Sachen installieren dürfen ebenfalls Makulatur wird.)

Ein Mittel für alles eben. Das einzige was man dann noch als Extension braucht, sind leichtere Verwaltungsmodule, aber die Grundfunktionen sind dann im Framework und müssen nicht mühsam nachgebildet werden.

(Vielleicht ist das Zeug auch drinnen? Warum gibt es sie dann nicht unter Einstellungen?)

Download Manager

Was soll denn das sein? Bei 100 Einträgen im Download-"Manager" wird dieser quälend langsam beim Einzellöschen von Einträgen? Wie lösche ich 500 Einträge von 10000 auf einmal? Nix markieren und löschen?

Ausserdem ist das kein Manager:

  • Wieso beginnt der immer sofort zu laden?
  • Wie merke ich mir 200 URLs für später?
  • Wieso hört der nach 2 (konfigurierbar) URLs auf parallel zu laden? Wie trage ich dann zusätzliche Downloads ein ohne warten zu müssen?
  • Warum kann ich mich nicht entschließen, "jetzt mach diesen Download zusätzlich" während andere laufen? Das kann BitTorrent besser!
  • Wo sind Optionen wie "5 Downloads parallel" aber "pro Domain nur 1 Download"?
  • Traffic Throtteling um andere Downloads zu priorisieren?
Zur Klarstellung:

So wie er jetzt ist ist das - für mich - kein "Manager" sondern schlicht ein besseres History. Von einem Manager erwarte ich, dass er flott und Zügig in der Lage ist, millionen von Einträgen zu verwalten, z. B. indem ich URL-Listen (einige tausend Bilder etc.) hinzufügen kann, die er dann langsam und gesittet abarbeitet während ich nicht zusehe.

Die Tweaks, die es gibt (automatisches Speichern unter dem URL ist eines der wichtigsten) sind zwar ganz nett, aber setzen alle auf derselben schlechten Basis auf.

Der Download-Manager sollte Plugins (BitTorrent) unterstützen. Genauer: Er sollte überhaupt nicht vorhanden sein, sondern nur ein Framework in das man andere gleichzeitig einklinken kann. Über dieses Framework sollte der Download auch von Webseiten vonstatten gehen! Dann kann man auch EEPSITES, FreenetProject oder BitTorrent etc. direkt einklinken, ohne Nachteile. Und das erübrigt auch die anscheinend obligatorische "History" (wieso ist das etwas anderes als der Downloadmanager?).

Cookie-Manager

Man hat ein Cookie blockiert und stellt schließlich fest, die Seite funktioniert nicht.

Hm .. welches Cookie war's?

Merke: Ich habe schon Seiten gesehen, die 20 und mehr Cookies gesetzt haben, von denen nur eines wichtig ist. Es ist vollkommen unklar, welches das ist. Deshalb muss man sie sich alle in Ruhe gemeinsam ansehen können. Insbesondere die Cookies, die geblockt wurden!

FF braucht also einen ordentlichen Cookie-Manager (es gibt ihn nur als Plugin). Nicht so ein halbherziges Ding, in dem man mal was eingeben und suchen kann. Im Normalfall ist es vollkommen unbekannt, wonach man suchen muss! Wie muss der aussehen?

  • Man klickt auf den Cookie-Manager - sinnvollerweise in der Statusleiste bzw. Kontextmenü, nicht erst nach zig Clicks verborgen irgendwo unter "Tool : Options".
  • Es werden alle Cookies die vom jeweiligen TAB auf der Seite geblockt oder akzeptiert wurden angezeigt. Nochmals: Das gilt auch für den Verlauf des TABs! Außerdem sollte die "Parentalseite" von der das TAB geöffnet wurde in übersichtlicher Form enthalten ist.
  • Man sieht also nicht nur die Cookies, die die Seite setzen wollte, sondern auch die Cookies, die nicht an die betreffende Seite geschickt wurden (eingeschränkt auf die Cookies, die geschickt würden, also nicht alle Cookies).
  • Dann kann man diese leicht umschalten. Es ist unerträglich, dass man den Block etc. nur aus dem Cookie-Manager löschen kann! Das übertragene Cookie sollte dann nachträglich auch gesetzt werden, so dass man die Seite nicht neuladen muss, aber der Post evtl. funktioniert. Wenn das nicht geht muss man eben in der Historie zurückgehen bis das Cookie korrekt gesetzt wird.
Es gibt zig Cookie-Extensions für FF. So ganz genau das was ich möchte habe ich noch nicht gefunden, aber es ist besser als nix. Ich finde aber, derart essentielle Dinge gehören in den Browser-Kern!