Google Groups

The future of binary embedding


Benjamin Smedberg Mar 28, 2011 2:03 PM
Posted in group: mozilla.dev.embedding
Last summer, I led a session at the Mozilla summit to discuss whether
and how we ought to continue supporting our various embedding efforts
(gtkmozembed, javaxpcom, the ActiveX control, the NSView embedding
widget, etc) given the effort involved in preserving their various
degrees of code and binary compatibility with Mozilla core. We came the
following conclusions:

    * Embedding Mozilla rendering into other processes is a tough
      problem. We never solved it fully, and each embedder has had to
      spend lots of time tweaking things.
    * Firefox is the key product of the Mozilla project; to the extent
      that supporting embedding takes away from Firefox, we should
      strongly prioritize Firefox.
    * Binary compatibility of our embedding bindings is a high cost
      which is not worth the benefits.
    * As we move Firefox into a multiple-process model, the embedding
      solution we really want is very different from the one we
      currently have: we really want embedders to be simple containers
      for a separate Firefox process which would do the actual web
      rendering.

Because of this, I'm planning on making the following changes in our code:

    * Remove gtkmozembed and its supporting code. The promise of
      gtkmozembed was a binary-compatible wrapper that GTK applications
      could use to easily get web rendering into their application.
      Without significant supporting code to deal with profiles,
      certificates, prompts, and other details, this code doesn't work
      correctly, and is unmaintained.
    * Remove javaxpcom and its supporting code.
    * Remove the ActiveX control and plugin, and the IDispatch code
      which was created to support interconnecting the ActiveX code with
      our DOM.

Various people have expressed interest in taking of maintenance of these
embedding solutions, but I lost their email addresses in a recent
computer crash. Anyone with interest should please email me, and I will
happily work with you to set up a Mozilla repository for the continued
maintenance of these projects.

As a project, we aren't going to spend effort trying to solve the
problems associated with in-process embedding. Once separate-process
rendering is implemented in Firefox, we may consider ways to make really
simple multi-process embedding a possibility. If you are interested in
helping to begin implementation of this multiprocess embedding solution,
please let me know, and I will help guide you in the right direction.

--BDS
Module Owner, Embedding