Die meisten modernen Webbrowser sind riesige Biester und wahrscheinlich ziemlich schlecht designt, weil sie (und das Web selbst) sich eher willkürlich entwickelt haben.
Sie müssen zunächst die Ziele Ihres Projekts (und was Sie erreichen möchten) sehr deutlich machen. Tun Sie das nur zum Spaß oder erwarten Sie, dass andere Leute Ihren Browser verwenden? Wenn Sie erwarten, dass andere es nutzen, was ist der Anreiz für sie? Es ist unrealistisch zu erwarten, dass Sie einen neuen Browser von Grund auf neu entwickeln, den jeder als Ersatz für Chrome, Safari, Firefox, IE, Opera usw. verwenden kann. Alle diese Projekte haben einen Vorsprung von 10 bis 15 Jahren Sie, und wenn Sie sie eingeholt haben, werden sie Ihnen noch 10-15 Jahre voraus sein. Außerdem haben sie viel mehr Arbeitskräfte hinter sich. Wenn Sie also möchten, dass Ihr Projekt erfolgreich ist, benötigen Sie diese Arbeitskräfte irgendwann.
Dies ist der Grund, warum Apple und Google, große Unternehmen mit vielen Ressourcen, nicht bei Null angefangen haben. Nicht einmal Microsoft hat von vorne angefangen. Der ursprüngliche IE basierte auf Mosaic. Die einzigen bedeutenden Browser, die heute noch von Grund auf neu gestartet wurden, sind Opera , Konqueror und Lynx, die leider alle winzige Marktanteile haben. Vergessen wir Lynx für den Moment, da es sich um einen Nur-Text-Browser handelt und vermutlich der einzige Grund, warum es ihn noch gibt, darin besteht, dass er diese spezielle Nische bedient. Opera ist wohl einer der besten Browser, die jemals hergestellt wurden, und dennoch hatte es nie einen großen Marktanteil. Denken Sie also daran, dass Erfolg und Innovation nicht dasselbe sind. KHTML ist die Engine hinter Konqueror, die selbst nie sehr erfolgreich wurde, aber die Grundlage für WebKit ist, das sowohl Apple als auch Google verwenden. Ich denke, man könnte definitiv argumentieren, dass es weder Safari noch Chrome geben würde, wenn KHTML niemals erstellt worden wäre. Interessanterweise wurden sowohl KHTML als auch Opera größtenteils von norwegischen Programmierern produziert, die im selben Gebäude in Oslo arbeiteten.
Sie müssen sich das Erstellen eines Webbrowsers wie das Erstellen eines Betriebssystems ansehen, da dies im Wesentlichen ein Browser ist - es ist ein Betriebssystem zum Ausführen von Webanwendungen. Und wie ein Betriebssystem ist ein Webbrowser eine sehr komplexe Software mit vielen Komponenten. Natürlich ist es den Menschen gelungen, neue Betriebssysteme von Grund auf neu zu erstellen. Linus Torvalds fällt mir ein. Er machte Linux zu einem der erfolgreichsten Betriebssysteme aller Zeiten.
Natürlich stehen Sie vor einer zusätzlichen Herausforderung, die das Erstellen eines neuen erfolgreichen Browsers schwieriger macht als das Erstellen eines neuen erfolgreichen Betriebssystems. Von Browsern wird erwartet, dass sie den gesamten im Web schwebenden Legacy-Code fehlerfrei ausführen. Nehmen wir nun an, Linus Torvalds wurde mitgeteilt, dass sein neues Betriebssystem keine Rolle spielen würde, es sei denn, es wäre perfekt abwärtskompatibel mit UNIX oder einem vorhandenen Betriebssystem. Ich bezweifle, dass er sich die Mühe gemacht hätte, und Linux würde heute wahrscheinlich nicht existieren. Realistisch gesehen war der einzige Grund, warum Linux populär wurde, natürlich, dass es gut entworfen wurde und das GNU-Projekt Tools für die Portierung großer Mengen vorhandenen Codes auf Linux erstellen konnte. Ohne die ideologische Unterstützung von GNU für Linux hätte es keine Chance gehabt.
Vorausgesetzt, Sie sind wirklich ehrgeizig (oder tollkühn) genug, um einen neuen erfolgreichen Browser zu erstellen, sollten Sie sich auf Architektur und Design konzentrieren . Es gibt keinen praktischen Grund, einen neuen Browser von Grund auf neu zu erstellen, es sei denn, Sie sind sicher, dass Sie das Design vorhandener Browser auf irgendeine Weise verbessern können. Das bedeutet, dass Sie sich mit dem Code von WebKit und Gecko ausreichend vertraut machen müssen, um die von ihnen getroffenen Entwurfsentscheidungen zu verstehen. Sie sollten jedoch nicht versuchen, den Entwurf zu kopieren, da Sie sonst genauso gut den Code verwenden könnten.
Meine persönlichen Gedanken (ohne genügend Nachforschungen angestellt zu haben) sind, dass die heutigen Browser nicht modular genug sind. Wenn ich einen neuen Browser erstellen würde, würde ich einen Weg finden, das Ein- und Auswechseln zu vereinfachen (z. B. das Ersetzen einer JavaScript-Engine durch eine andere) und dem Benutzer viel mehr Kontrolle zu geben, als dies derzeit bei vorhandenen Browsern der Fall ist . Moderne Browser und Webdesigner haben dem Benutzer fast die gesamte Kontrolle genommen. Warum kann ich als Benutzer dem Webbrowser nicht mitteilen, wie der auf meinem Computer angezeigte Inhalt gerendert werden soll? Der ursprüngliche HTML-Code enthielt nur Richtlinien für die Strukturierung von Inhalten, und im Laufe der Zeit wurden neuere Standards immer dogmatischer, bis der Benutzer nun dem Webdesigner völlig ausgeliefert ist. Der Reiz von Linux bestand darin, dass es dem Benutzer die Kontrolle zurückgab und dass '
Die andere Sache, die ich erforschen würde, wenn ich Sie wäre, sind die Prinzipien des Betriebssystemdesigns. Das Entwerfen eines guten Browsers sollte zumindest theoretisch dieselben Prinzipien erfordern wie das Entwerfen eines guten Betriebssystems - insbesondere im Hinblick auf gleichzeitige Prozesse, Sicherheitsmodelle usw.
Nachdem Sie viele Nachforschungen angestellt haben, sollten Sie hier mit dem Codieren beginnen, denke ich:
Mosaik neu konstruieren, aber mit eigenen Designideen. Dies ist auch das, was ich vorschlagen würde, wenn Sie es nur zum Spaß oder zu Ihrem eigenen Bildungsnutzen tun. Lesen Sie die ursprünglichen HTML 1.0- und HTML 2.0-Spezifikationen sowie die HTTP 1.1-Spezifikationen und die aktuellen URI-Spezifikationen und stellen Sie sicher, dass Ihr Browser alle diese Spezifikationen einhält. Sie können natürlich vorhandene Software herunterladen, die bereits die Transportprotokolle, URI-Konventionen usw. verwaltet. Wenn Sie jedoch ernsthaft Ihren eigenen Browser entwerfen möchten, ist es meiner Meinung nach eine gute Übung, diese Dinge auch von Grund auf neu zu erledigen ein gutes Gefühl dafür, wie alle Puzzleteile zusammenpassen. Am Ende von Schritt 0 sollten Sie einen Browser haben, der zumindest mit dem Stand der Technik in den 90er Jahren vergleichbar ist. Dies ist ein guter erster Meilenstein. Und Sie können das Original-Mosaik tatsächlich unter herunterladenftp://ftp.ncsa.uiuc.edu/Mosaic/ und sehen Sie, wie es mit Ihrem Browser verglichen wird. Es ist auch eine gute Übung, um zu sehen, wie aktuelle Websites in einem alten Browser wie Mosaic gerendert werden.
Fügen Sie Ihrem Browser Unterstützung für das DOM hinzu. Konzentrieren Sie sich zuerst auf W3C DOM Level 1 und Level 2, da so gut wie alle aktuellen Browser diese vollständig unterstützen. Schauen Sie sich dann Level 3 und Level 4 an. Das DOM ist für die Webprogrammierung äußerst grundlegend. Wenn Sie also einen modernen Webbrowser erstellen möchten, muss das gesamte Design dies berücksichtigen. Da Sie den Browser in C # schreiben, möchten Sie möglicherweise berücksichtigen, wie Sie das vorhandene .NET-Objektmodell zu Ihrem Vorteil nutzen können.
Sehen Sie sich vorhandene Scripting-Engines an und prüfen Sie, ob Sie sie auf Ihr Projekt portieren können. Ich würde Sie davon abhalten, Ihren eigenen JavaScript-Interpreter zu schreiben, nicht nur, weil dies ein sehr großes Projekt für sich ist, sondern weil bereits so viel Arbeit in die Optimierung von JS-Compilern (z. B. V8) gesteckt wurde. Wenn Sie also kein Guru im Compiler-Design sind, ist Ihr handgefertigter JS-Interpreter wahrscheinlich schlechter als das, was es bereits gibt, selbst wenn er den EMCAScript-Spezifikationen einwandfrei folgt. Auch hier denke ich, dass die Scripting-Engine ohnehin ein völlig anderes Modul als der eigentliche Browser sein sollte. Ich denke, es wäre viel nützlicher, ein Framework zu haben, mit dem Sie jede Scripting-Engine ersetzen können, anstatt eine Scripting-Engine zu erstellen das funktioniert nur mit deinem browser.
Sehen Sie sich den HTML / CSS / JS-Quellcode für die 10 bis 20 besten Websites in Nordamerika an (Google, Facebook, YouTube, Twitter, Wikipedia, Amazon, beliebte Blogging-Plattformen usw.) und entwickeln Sie Ihren Browser so, dass er mit diesen Websites gut funktioniert . Dies ist ein etwas leichter zu lösendes Problem, als einen Browser zu erstellen, der allen bestehenden Standards entspricht (was die aktuellen Browser immer noch nicht perfekt machen), geschweige denn einen Browser zu erstellen, der alle Websites im Web korrekt wiedergibt (niemand kann dies) TU das). Die Leute werden sich beschweren, dass Ihr Browser gegen Standards verstößt und so weiter, aber das ist kein so großes Problem wie die Leute, die sich beschweren, dass sie mit Ihrem Browser nicht auf Google oder Facebook zugreifen können. Ich kann mir keinen Browser vorstellen, der bei seiner ersten Veröffentlichung alle (oder sogar die meisten) Standards korrekt befolgt hat, also sage ich, versuche es nicht einmal.