It would have been better if MT started with using a tried and tested GUI toolkit from the start instead of using its own. But now it's too late to cry.
Now a switch WILL of course be very painful, but it would also solve many problems with the current system. But we have to throw away a ton of mods, obviously. Such a hard switch would probably not work. Not just from a technical standpoint, but also from a social one. Many modders might feel alienated.
My opinion has always been that we should have our own pure Lua toolkit. Expose some 2D drawing primitives from core to client-side Lua, and let it do the rest.
Oh god, please, no. Please don't outsource everything to Lua just because the engine is lacking features.
This would make mods even more bloated and complicated, forcing them to replicate the same core functionality over and over again. There is going to be a huge amount of reundancy if the engine does not even offer even the most basic widgets like labels, buttons, etc.
I wonder what's next? Outsourcing the rendering routines to Lua? xD This “let Lua do everything” mentality has to stop.
It would also be bad for usability because the widgets which mods come up with are doomed to be inconsistent like hell.
ACTUAL problems with formspecs:
- Coordinate systems are inconsistent and weird
- Missing documentation on coordinate systems
- Very incomplete documentation on the returned fields in the *_receive_fieds callbacks
- Not very flexible
All of these could theoretically be fixed without starting over from scratch.
What's NOT a problem with formspecs:
- That it's string-based. Don't waste your time here, we have much bigger problems
I have a compromise idea: Include a GUI toolkit as suggested, but make this only an internal change. The Lua API stays the same and the formspec strings are then just parsed and translated by the engine to the GUI toolkit calls. This would make the transition 100% backwards-compatible.
Whether to phase out the formspec strings entirely needs to be decided later. Currently, I don't think the string-based system is really a big problem. The messed-up coordinates are much worse.