Asking for my colleague who is in charge of front-ends:
Image we would need to implement another widget type. Both the Gtk and the Web client look quite monolithic in this area. Is there some way to “plug-in” the widget into the existing clients?
(He has a specific widget type in mind, Anyhow this is a general question.)
Create a plugin for the desktop-client, which adds the new widget to tryton/gui/window/view_form/view/form.py.
This also requires to provide users with a custom version of the frozen desktop-client.
Create a plugin for SAO, which adds the new widget-view to Sao.View.FormXMLViewParser.WIDGETS (in sao/src/view/form.js)
Provide a patched version of trytond/ir/ui/form.rng (and eventually tree.rng) which adds the name of the new widget type.
Add a module to trytond, which monkey-patches ir.ui.view.View.get_rng() to read the patched files.
(As an alternative to (3) and (4), ir.ui.view.View.get_rng() could be monkey-patched to patch form.rng and tree.rng on the fly while reading.)
That is one way of doing it, but you should be able to do it without creating a custom version of the desktop client. It should be possible to add the plugin separately for each user by putting it in the plugins folder in the user’s desktop client configuration directory.