I’m a Linux user, and I have been very hesitant to use Glade to design GUIs, since the xml files it produces can easily be modified. I know it doesn’t sound like a major issue, but what if it’s a commercial app that you just don’t want people changing?
I use Mac OS X every once in a while, and I figured out that they use files called “.nib”s for GUIs. I think they’re essentially the same type used in Nextstep and Openstep (there’s even a Linux app which lets you edit these files). Anyway, these files are included in the application bundle, and according to some people, are completely editable. This person claims he even successfully edited Keynote’s interface.
Now, why would that be possible? Is it completely okay for the end user to change the interface? Or is it better to have the GUI directly in the compiled application code, like traditional GTK apps?
OS X nib files are one option; the other option is to do things programmatically. For android, XML files can define the GUI or program code can do it. In Windows WPF, the UI is made in XML. Firefox/Mozilla? XUL, another XML-based UI language.
Most modern GUI toolkits have either both of these options or even just defining UIs in files.
But even binaries are modifiable. With a good binary reverse engineering tool, it’s wide open. The only way to be really certain is to do what Apple did with iOS, and run signed code; the entire bundle is signed by a key and can’t be run if modified.
This isn’t a problem for most everyone. Why do you care if the UI is modified? The underlying code isn’t, so functionality can’t be added or modified.
As a corollary (and a little off-topic) something that you might have a valid concern about is stuff a little more like this.