← Back to team overview

unity-design team 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
an XML DOM that is controlled by C instead of Javascript. Then, I would
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 plans currently.

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.


Follow ups