unity-design team mailing list archive
Mailing list archive
Unity extensibility. Was: complaints
On 02/08/2012 10:15 PM, Owas Lone wrote:
Since you are going to Improve this area in the future, I want you to make
control the positioning of any Unity interface element with getElementById
and insertBefore. Later, I want you to add createNode, setAttribute and
removeChild to the API. Then, I would create, update and delete any Unity
interface element. Firefox has this. Can Unity have it too?
That wouldn't work. To me the most obvious way to go would be to use
GObject system which Unity is built on. lib-peas could provide a nice
plugins infrastructure to Unity. With it you could write plugins in
almost any language. Exposing a HTML DOM like API for something not
built with HTML is just not sane.
There are several technical problems related to Unity extensibility.
Firstly we have (depending on how you count) 2 (or more) versions of
Unity (3d and 2d). Plugins would need to work in all of them.
"Plugin" to me implies being able to run code inside your host. Unity3d
currently runs *inside* the window manager process (ie. compiz). Running
inside a window manager gives certain restrictions, that it takes deep
understanding, care, and effort to live by. Otherwise you will introduce
very hard to track bugs and degrade the entire desktop. We can not
reasonably expect this from plugin authors.
Unity2d is seprate to the WM, and this is also something we want long
term for the 3d version, although I aware that there are particular
For these reasons (among others) we allow out-of-process extensions to
Unity. That is quicklists, indicators, and lenses/scopes. Possibly
others in the future - but admittedly it does limit the amount of
integration you can do to some degree.
Related to Firefox extensibility - it is my own experience that it is a
double edged sword. Sure, you can do stunningly awesome things, but most
non-trivial extensions will impact general browser performance noticably
- or introduce hard to track bugs. I've seen this *so* many times. If we
had something similar in Unity it would not just be the web experience
that would suffer, but it would be *every* single app and every single
bit of your desktop that would suffer.