managed web browser

A discution have started today about doing a managed web browser.

Advantage :

  • Cross plateform browser
  • Can be used in dotnet without wraping a unmanaged class
  • Can be funny 😉


  • Reinvent the weel
  • Far from the goal of mono
  • Take a long time and lot of money
  • Firefox is ever cross plateform…

To be honnest, it is a cool project to learned a lot of things. But behind that the real gain is not so big versus the time of development.


We have a lot of things ever done:

  • Jscript compiler
  • HttpWebRequest
  • visual layer with system.Drawing (GTK# or Winforms seems bad for me to customize and is not done for that…)
  • xml parser

And a lot to do:

  • CSS parser
  • DOM
  • HTML parser
  • ActiveX
This entry was posted in .NET, development, Mono. Bookmark the permalink.

13 Responses to managed web browser

  1. Scott says:

    If there wasn’t WebKit and only GtkMozembed I’d say definitely. Gtkmozembed is finiky and not really maintained. We’ll see about WebKit.

    Besides that, a html renderer is a mammoth undertaking because of all the little compatibility tweaks. Though, you would have the advantage that someone is already writing a JavaScript compiler within Mono.

  2. Abe says:

    There can be a HUGE financial gain if it incorporates a search that is integrated with Google.

  3. Viraptor says:

    Maybe something in between? Like making xul/ecma compilable by mono? I’m not sure if there would be much gain in performance from xulrunner, as I don’t know it too well – any thoughts on that?

  4. Laurent Debacker says:

    It depends on the GUI toolkit you use. In WPF, I think it should be a lot easier than in Gtk+ or MWF. You would have to build a HTML to XAML converter (like The System.Windows.Documents would be extremely interesting for this. For the Javascript side, we already have a JS engine in MONO. Just my 2 cents.

  5. cool, very cool says:

    I have the same idea, but I still don’t have good reasons to do it. I’m thinking about this for the last 2 months. I like the idea of doing this in hardware ( fpga, multicore cpu or something like that). It is a nice project :). I am thinking more like doing managed for this plugins ( xul, flash, silverlight, svg, java with ikvm, …). Of course this must be open source. It can be fun and maybe somebody will pay for this 🙂 . PS. In the end this can be fast if is deployed in native form and it can grow in some form of OS.

  6. Vladimir Giszpenc says:

    If the goal is a managed experience from top down, I would recommend looking at SharpOS. A managed browser does not add much value because you are still sitting on top of an unmanaged kernel and unmanaged GUI stack. Of course, I am merely an onlooker from afar, but I wish the SharpOS implementers luck.

    And if you decide to look at writing a browser, je vous souhaite bonne chance aussi!

    The problem I see is that we need GtkSharp (or some other toolkit) to be mature. You are still writing your application on top of C and C++. Take a look at singularity from the folks at Microsoft Research. Making the kernel managed reduces the need to switch between managed and unmanaged almost completely.

    I can’t wait… I would recommend adding an application that everyone needs that does not exist on Linux like a TurboTax/TaxCut type of application that can use the new workflow stuff. I am sure you could get a few more people to switch to Linux (and start contributing) once there are all the applications a user needs to convert. Why limit yourself to the browser. Enrich the application landscape. Writing it on top of GTK makes it fairly cross platform. It would obviously need to play nice with GNUCash


  7. daniele_dll says:


    this is my first post on this blog, but i read regularly mono winforms mailing list and monologue 🙂

    A lot of months ago i started to work on a really flexible vectorial engine:
    – Application start and load a set of assemblies that contains supported namespaces, tags and so on
    – Browser read an (x)html with an own parser, to propery parse special tags like script or style or other sets of tags like mathml and so on using loaded assemblies if special parsing is required.
    – While it parse, it build Document Object Model that contains a reference to an object that manage a specific tag
    – When it need to draw, or redraw, it ask to document, or to a specific set of tags, to build, or rebuild, a command list for the vectorial engine as a sequence of operations.
    – Vectorial engine do all necessaries calculations for text and images and all other stuff and draw them.

    When saving the cache the dom can be serialized with the command list for the vectorial engine, in this way cache give a true speedup.

    For javascript is possible to compile rhino with ijvm, i think, or is possible to try to compile it with mono compiler

    However, it’s true, this is as reinvent the well, but, many times, programmaing is this: if someone do a thing you try do to it better and more featured! Looks as programming languages why reinvent the well with c, c++, d, visual basic, pascal, cobol, c#,, java, javascript and so on!

  8. duff says:

    For the javascript stuff, I know because the someone is me 😉
    else I have update to show the needed things and the things ever done.
    I think that we can use some work of firefox or other open source browser to just port the code in C# and have quick result as axiomengine done for ogre3d

  9. daniele_dll says:

    eheheh ok 🙂

    The problem is, like for axiom engine, that it doesn’t use full powerful of a language like c#

    With C# features the structure drastically change.

    It’s true, there are a lot of tricks to do to make it correctly parse html pages, but on a balance i think that advantages are more than disvantages.

    Many applications use html as frontend so instead to do a complete browser it’s possibile to target this as first instance

  10. duff says:

    hmm *nod*,
    I agree with you.
    And for jscript, I have think that we have too the old one ever done in Mcs/class…
    I have ever done a long time ago a htmlReader which build a tree of object with patter visitor.
    I will try to get it back when I have finished the JScript compiler to provide a start if someone is ever crazy to start this funny project ;)))
    I love the project because it is funny but it seems totaly enormous for a small gain but open source is here to make things funny and not always useful things…

  11. daniele_dll says:

    eheheh true, this can be a really handy and interesting project

    The true problem is performance: is necessary to connect DOM to Vector Engine Commands because when javascript modify the page rebuilt the command queue and redraw all the stuff kill all

  12. jesse van dam says:

    What about the security, which is the most importent for such a project.
    Security of managed browser will be much better because you can make more easyly a sandbox and have no buffer and stack overruns.

  13. mpiva says:

    Porting the webkit ( to .NET could be the way to go. Webkit is used in the Safari browser, the nokia browser and in the future, the Android Platform. it’s already ported to cgywin/win, mac, gtk and Qt.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s