Quo Vadis netrik? (was: [linux-l] Bester Textbrowser?)

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
Di Apr 17 01:53:29 CEST 2007


Hallo,

On Sun, Apr 15, 2007 at 12:59:44PM +0200, Volker Grabsch wrote:

> ich habe mir gerade DamnSmallLinux angesehen, das einen Textbrowser
> namens Netrick empfielt.

Huch... Solche Ehre hätte ich garnicht erwartet ;-) Vielleicht sollte
ich das Ding ja doch mal weiterentwickeln. Die letzten Jahre hat mir
irgendwie die Motivation dazu gefehlt...

Im jetztigen Zustand (in dem es sich seit einigen Jahren befindet...),
kann ich netrik guten Gewissens eigentlich nur zum browsen von
HTML-Dokumentation empfehlen; dafür ist es echt handlich und gut zu
bedienen.

Zwar funktionieren auch erstaunlich viele Webseiten; und für einige, die
ich besonders häufig benutze, und weiß dass sie gut laufen (google,
heise-ticker, leo), finde ich netrik auch im jetztigen Zustand schon
sehr praktisch. Sobald ich aber durch das Große Weite Web surfe, stoße
ich selbst sehr schnell an Grenzen, und muss dann auf w3m und/oder
Firefox ausweichen.

> Doch wie sieht es mit Textbrowsern aus? Die einzigen nennenswerten,
> die ich kenne, sind:
> 
>     lynx w3m links netrik
> 
> Hat jemand von euch Erfahrungen damit? Wie stehen diese Browser im
> Vergleich zueinander?

Unter den reifen Textmodus-Browsern, empfehle ich persönlich w3m am
meisten -- im Vergleich zu lynx, elinks, oder links2 bietet es IMHO mit
Abstand das beste UI, und auch in vielen Hinsichten die sinnvollste
HTML-Darstellung. (netrik hat zahlreiche Ähnlichkeiten -- teilweise von
w3m geborgt; teilweise auch ähnliche Ideen, die ich schon hatte, bevor
ich w3m kannte...)

> Ich hätte von der Netrik-Seite erwartet, dass sie ihre Feature-Liste
> mit der von anderen beliebten Textbrowsern vergleichen. 

Diesen Text habe ich geschrieben, als ich den Code zum ersten Mal auf
SourceForge gepackt hatte. Damals konnte er nichts weiter als eine von
stdin gelesene HTML-Seite formatiert ausgeben -- es *gab* also noch
keinerlei Features zum vergleichen. Nicht umsonst spricht die Seite von
Zielen, in der Zukunft.

Sicherlich wäre es angebracht, einige Teile der Seite ordentlich zu
überarbeiten -- aber das würde natürlich nur Sinn machen, wenn ich mich
tatsächlich entschließen sollte, netrik wieder ernsthaft
weiterzuentwickeln... :-)

Ich erstelle hier einfach Mal eine Liste von interessanten
netrik-Features, die mir so spontan einfallen. Kann man alles als
Kleinigkeiten abtun, aber vieles davon sind Dinge, die ich persönlich
enorm praktisch und wichtig finde.

- Ziemlich klein. (Vermute mal das ist der Grund für die Empfehlung von
  DSL...) Das ist natürlich zum Teil auf mangelnde Funktionalität
  zurückzuführen. Ich bilde mir aber ein, viele Sachen auch einfach sehr
  geschickt gelöst zu haben.

  Es gibt allerdings auch noch einige Teile, die wesentlich vereinfacht
  werden könnten. Einige Sachen könnten zum Beispiel sehr viel einfacher
  und eleganter gelöst werden, wenn ich asprintf() benutzt hätte -- was
  ich mich aber aus Portabilitätsgründen nicht getraut habe. Mittler
  Weile denke ich, dass das ziemlich dumm war -- so eine nützliche
  Funktion nicht zu verwenden, nur weil einige zurückgebliebenen
  UNIX-Dinosaurier es vielleicht nicht kennen... Und sollte jemand
  tatsächlich irgendwann netrik auf sowas portieren wollen, kann er
  immer noch gnulib benutzen.

  An sonsten gibt es einige Sachen, die sich mehr Data-driven machen
  ließen, und auch einige andere Refaktorisierungen, um duplizierten
  Code zu sparen. Und beim HTML-Layouting gibt es Einiges an Bloat, da
  ich mich nicht an "You Ain't Gonna Need It" gehalten hatte, sondern
  ein ziemlich aufwändiges Prinzip verwendet -- mit Blick auf eine
  verbesserte Darstellung, die ich dann jedoch (bisher zumindest) nie
  umgesetzt habe...

- Schnell: Sowohl Laden von Seiten, als auch Scrollen, ist erheblich
  flotter als bei w3m. (Macht sich auch auf schnellen Rechnern durchaus
  noch bemerkbar, falls der Rechner anderweitig stark belastet ist...)

- Der gesammte Bildschirm wird für den Seiteninhalt genutzt. Eigentlich
  ja nur, weil ich nicht dazu gekommen bin, eine Statuszeile zu
  implementieren... Aber einige Leute scheinen das als Feature zu sehen.

- Ausgiebige Nutzung von Farben zur Verdeutlichung von diversen
  HTML-Konstrukten. (Links, Formulare, Bilder, Tabellen, Listen etc.)
  w3m macht es vom Prinzip ähnlich, geht aber nicht so weit. Bei Lynx
  ist es nur in extrem kleinen Ansätzen vorhanden. Soviel ich weiß hat
  es keiner der links-Abkömmlinge auch nur Ansatzweise.

- Einige HTML-Konstrukte werden meiner Ansicht sinnvoller dargestellt
  als in anderen Textmodus-Browsern. (Einige andere dafür aber bisher
  garnicht, was das natürlich etwas relativiert... :-) )

- Farbige Dumps möglich. (ASCII-Text mit ANSI-Farb-Sequenzen, teilweise
  als "rich text" bekannt.)

- Informationen beim Laden von Seiten, einschließlich Warnungen und
  Fehlermeldungen, werden im Terminal-Modus (scrollender Text)
  dargestellt -- wesentlich besser zu überblicken und verfolgen als eine
  Statusleiste

- Versucht HTML-Fehler möglichst sinnvoll und Standardkonform zu
  behandeln. Über gefundene Probleme wird beim Laden auch berichtet --
  was allerdings die meisten Nutzer wohl eher als nervig empfinden
  dürften, da es im Web kaum korrekte Seiten gibt :-( Wer selbst HTML
  schreibt, oder Autoren auf Probleme hinweisen möchte, kann es dagegen
  durchaus nützlich finden.

  Musste hier leider neulich gerade feststellen, dass es teilweise
  falsche Warnungen gibt, aufgrund von fehlendem utf8-Support...

- Alle String-Eingaben (URL-Eingabe, Textsuche, Formularfelder) erfolgen
  mit readline() und history()

- Praktisch identische Darstellung in xterm und "echter" Konsole.
  (Erfolgt allerdings über eine ziemlich krude Heuristik -- um das
  richtig zu machen, bedürfte es Erweiterung von ncurses...)

- Angepasste Farbschemata für hellen oder dunkeln Hintergund

- Hintergrundfarbe kann erzwungen werden, um immer einen dunklen
  Hintergrund für netrik zu benutzen, selbst wenn das Terminal sonst
  hellen Hintergrund hat. (Die Farben sind auf dunklem Hintergrund
  besser erkennbar -- abgesehen davon, dass ich generell der Ansicht
  bin, dunkler Hintergrund ist viel gesünder und besser zum Lesen :-) )
  Ist natürlich ausschaltbar.

- Aktiver Link wird gut sichtbar, gleichzeitig aber wenig aufdringlich,
  und optisch ansprechend markiert. (Andere Textattribute werden nicht
  überdeckt.)

- Vollständige/korrekte Behandlung von SIGWINCH (Anpassung des
  Bildinhaltes, wenn sich die Größe des Fensters ändert, beispielsweise
  im xterm)

- Konfigurationsdatei benutzt gleiche Syntax und Optionen wie
  Kommandozeile

- Leistungsfähige Page-History:
   - Man kann sich nicht nur rückwärts, sondern auch vorwärts bewegen.
     (Bei grafischen Browsern selbstverständlich, fehlt aber bei vielen
     Textbrowsern -- was gerade bei diesen besonders nervig ist, wenn
     man mit einen unbedarften Tastendruck versehentlich zurückgegangen
     ist...)
   - Springen zum letzten absoluten Link. Hilft oft dabei, wenn man zur
     vorherigen Site zurück will, ohne durch jeden zwischenzeitlich
     gefolgen Link einzeln zurückzublättern. (Opera scheint übrigens
     irgendwann etwas Ähnliches unter der Bezeichnung "Fast
     Forward/Backward" eingeführt zu haben, wenn auch sichherlich mit
     einer ausgebauteren Heuristik...)
   - Setzen von Marken in der History, um später einfach zurückkehren zu
     können

- Wenn man sich in der Page-History vorwärts oder rückwärts bewegt, und
  die dadurch aufgerufene Seite sich in der Zwischenzeit geändert hat,
  wird mit einer Heuristik versucht, trotzdem die "richtige"
  Cursorposition zu erhalten. Sehr praktisch zum Beispiel beim
  Heise-Newsticker.

- Navigation innerhalb der Seite (Linkauswahl, Scrollen) erfolgt über
  eine IMHO sehr prakische Kombination zwischen Pager-artiger Navigation
  wie bei Lynx/links (scrolling-orientiert), und Editor-artiger
  Navigation wie bei w3m (Cursor-orientiert).

- Sehr viele praktische Kommandos für Scrollen und Linkauswahl, z.B.
  erster/letzter Link auf der Zeile, erster Link auf nächster/vorheriger
  Zeile, Anfang/Mitte/Ende des Bildschirms, Scrollen um einzelne Zeilen,
  zwei Zeilen, hablen Bildschirm oder ganzen Bildschirm etc.
  (Insbesondere vi-Nutzer dürften sich zu Hause fühlen :-) )

- Per Option können die Cursortasten für echte Cursorbewegungen benutzt
  werden (wie bie w3m), statt zur Linkauswahl (wie bei Lynx/links). Das
  erlaubt es, die Flash-Tasten von Braille-Displays zu benutzen.

- Anchors in der gleichen Seite werden sowohl beim direkten Anspringen,
  als auch beim Bewegen in der Page-History effizient behandelt (manche
  Textbrowser laden hier die ganze Seite neu...)

- Beim Anspringen eines Anchors wird die Position deutlich markiert

Natürlich könnte man eine ebenso lange Liste von Nachteilen erstellen...
Das überlasse ich aber dem geneigten Leser ;-)

> Stattdessen ziehen sie einfach nur unspezifisch über andere Projekte
> her, ohne konkrete Probleme zu nennen. Hier ist, was ich meine:
> 
>     http://netrik.sourceforge.net/?intro.html

Ich habe bewusst etwas dick aufgetragen, um mir selbst Mut zu machen.
Als "über andere Projekte herziehen" hätte ich es allerdings nicht
wirklich gesehen...

> | [...] | There is a handful of different text mode browsers (lynx,
> w3m, and links | being the most popular ones), but each of them is
> limited in some | regard. Some of them lack the ambition to add
> advanced features; others | lack the ambition to create real
> innovations.

Als ich das geschrieben habe (vor bald sechs Jahren), hatte ich mich auf
eine Aussage auf der w3m-Seite gestützt, wo der Autor ausdrücklich
geschrieben hatte, dass er in w3m keine wesentlichen weiteren Features
implementieren will; dass er es gut findet wie es ist. Dass er sich
später selbst nicht daran hält, konnte ich natürlich nicht wissen.

Dass Lynx seit Ewigkeiten nicht mehr weiterentwickelt wird, was
wesentliche Neuerungen anbelangt, sollte keiner Diskussion bedürfen.

Das ursprüngliche links war zu dieser Zeit tot. Dass damals heimlich im
stillen Kämmerlein links2 entwickelt wurde, konnte Keiner wissen. elinks
gab's glaub' ich noch nicht, oder es war ziemlich neu -- ich kannte es
jedenfalls noch nicht.

Das mit den Innovationen bezog sich übrigens auf links. Alle Browser der
links-Familie haben zwar einige nette zusätzliche Features (insbesondere
Tabellen- und Frame-Darstellung, bei links2 auch noch etwas JavaScript
und ansatzweise grafische Fähigkeiten), aber halten sich an sonsten in
Aussehen und Bedienung weitgehend an Lynx. Das mit der Bedienung finde
ich besonders nervig -- während sie beim ursprünglichen Lynx noch ganz
gut funktioniert, ist sie bei links, mit Tabellen und Frames, einfach
nur tierisch umständlich. In dem Sinne finde ich netrik -- auch wenn es
an Funktionalität arg mangelt -- jetzt schon sehr viel fortschrittlicher
als links.

> | [...] | Ok, it still lacks some important features to make it really
> nice, and | none of the advanced features are implemented yet... But
> that is more | than many of the other projects can claim :-)

Ich hatte seinerzeit bei SourceForge die Liste aller Browser-Projekte
durchgesehen. Mehr als die Hälfte davon waren Totgeburten. (Mittler
Weile gib's die sicherlich nicht mehr, da SF irgendwann angefangen hat,
die Listen von solchen Dingern zu säubern...)

> | [...] | There are also some projects at Sourceforge that are alive
> and lively, | and may seem promising. The problem is that all of them
> intend to create | a simple browser. | [...]

Das bezog sich vor allem auf Dillo. (Ich glaube es waren noch einige
Andere dabei, kann mich aber nicht mehr so genau entsinnen.) Ich habe
nicht geprüft ob sich das mittler Weile geändert hat, aber damals war
erklärtes Ziel des Projekts, einen "simplen" Browser zu schaffen. Das
ist sicherlich kein falsches Ziel -- aber eben ein anderes als bei
netrik.

> Sollten sie jedoch wider erwarten Recht haben, und tatsächlich viel
> mehr Web-Features implementiert haben als lynx und w3m,

Wie gesagt, die Seite spricht über die Ziele von netrik, nicht was
aktuell implementiert ist. Dachte das wäre klar genug :-(

> so wäre das ein gutes Beispiel für einen Browser, der alles kann und
> trotzdem flink ist, quasi die Verbindung von Dillo und Firefox.

Den Vergleich würde ich nicht wirklich ziehen, nichtmal in Bezug auf die
erklärten Ziele. Auch wenn ich die Absicht hatte, falls das Projekt gut
läuft, irgendwann auch einen grafischen Modus zu implementieren, war der
Schwerpunkt von netrik immer auf Textmodus. Die Idee mit dem grafischen
Modus kam nur daher, weil -- auch wenn ich im Allgemeinen Texmodus
vorziehe -- es bei manchen Seiten dann doch nützlich ist, mal eben
einfach zum grafischen Modus wechseln zu können.

Tatsächlich gab es zu dieser Zeit aber einen argen Mangel an freien,
grafischen Browsern (Firefox gab's noch lange nicht; Mozilla war noch
weitgehend unbrauchbar); und ich dachte mir, sollte netrik wieder
Erwarten großen Erfolg haben, und das mit dem grafischen Modus klappen,
könnte es vielleicht auch helfen, diese Lücke zu füllen. Nachdem aber
Mozilla/Firefox seit langem gut funktionieren, würde ich es hier kaum in
Konkurrenz sehen.

> Aber ich glaube nicht, dass dem so ist. Zumindest das Netrik-Debian-
> Paket kann nichtmal HTTPS. (w3m hingegen schon)

Richtig. Und es fehlen auch diverse andere größeren Features, wie
Datei-Download, Darstellung von Textdateien, Cookies, HTTP-Auth,
Zeichensatz-Konvertierung... Wie gesagt, man stößt ziemlich schnell an
Grenzen.

Das traurige daran ist, dass ich gerade dann die Motivation für netrik
verloren habe, als die ganze grundlegende Funktionalität weitgehend
implementiert war, und ich hätte zum Implementieren der genannten
Zusatzfunktionen übergehen können. Die meisten davon sollten nicht allzu
schwer sein -- wahrscheinlich hätte es nicht mehr als ein paar Monate
gebraucht, netrik bei der allgemeinen Benutzbarkeit in eine ähnliche
Liga zu brigen wie etablierte Textmodus-Browser...

Ich überlege deshalb immer mal wieder, die Arbeit an netrik wieder
ernsthafter in Angriff zu nehmen. Es gibt aber eine ganze Reihe von
Gründen, die mich zweifeln lassen:

- Ich habe irgendwie das Gefühl, dass außer mir niemand netrik wirklich
  benutzt... Wobei die Empfehlung von DSL zu diesem Eindruck nicht ganz
  passt. Hm.

- Eigentlich sollte ich mich auf andere Dinge konzentrieren,
  insbesondere meine Diplomarbeit. Da ich aber auch so nicht so recht
  dazu komme, ist das Argument irgendwie zweifelhaft...

- Wie Oben schon angedeutet, können andere Textmodus-Browser mittler
  Weile viel mehr als damals als ich angefangen hatte. Auch wenn ich die
  praktische Bedienung von netrik nicht wirklich missen möchte, frage
  ich mich doch, ob andere Entwicklungen nicht wichtiger sind, als ein
  besserer Textmodus-Browser...

- Ich hatte mit der aktiven Weiterentwicklung mitten in der Betaphase
  aufgehört. Die verbleibenen Probleme, bevor ich das Ganze als "stable"
  deklarieren könnte, sind nicht groß -- aber irgendwie alles Sachen,
  auf die ich so recht keine Lust habe :-( Das motiviert natürlich nicht
  sonderlich dazu, die Arbeit wieder aufzunehmen...

- Ich frage mich, ob es wirklich nützlich ist, netrik als monolithisches
  Programm weiterzuentwickeln; ob ich die Mühe nicht eher darin
  investieren sollte, ein modulares Webbrowser-Framework auf Hurd-Basis
  zu implementieren. (Eventuell mit Linux-Kompatibilitätslayer, siehe
  http://tri-ceps.blogspot.com/2005/09/welcome-to-hell.html )

Bin also in mehreren Hinsichten hin- und hergerissen was netrik
angeht...

-Olaf- (AKA antrik)



Mehr Informationen über die Mailingliste linux-l