if you don't know what blueprint is, its "A markup language for GTK user interface files", an alternative to xml, but with numerous improvements:
https://gitlab.gnome.org/jwestman/blueprint-compiler/
Lets analyze the results!
What changed:
XML: 22% -> 14%
Blueprint: 37% -> 44%
Vala Code: 38% -> 41%
Summary: XML usage decreases more and more, while Blueprint is the primary replacement and also some people now prefer Vala code.
Also while GNOME apps are usually using XML or Blueprint and Elementary OS apps use Vala code, some app developers chose their own way, half of people using Vala code are *not* writing Elementary OS apps.
@vala_lang Why split vala code option into elementary and non-elementary?
Blueprint vs xml vs vala code seem like clear language distinctions. Elementary seems like a target OS, & even in that case in this day and age it's going to be a flatpak app. So you are not targeting a specific OS, but Linux (flatpak install base) in general.
@antolius this is because elementary os recommends to use Vala code for writing GUIs for apps for it. I think it is interesting to see also how much non-elementary os apps chose to use Vala code for that.
@vala_lang ah, got it. Yeah, my affinity for doing GUI in vala code was definitely influenced by elementary. I think Budgie does it like that too, but as far as I know they are less focused on the dev ecosystem side.
@antolius is budgie actively developing apps written in vala by themselves?
@vala_lang the desktop itself (including the UI) is in vala. I sometimes check their code to figure out how stuff works.
@antolius ah thats right. they use gtk for the desktop as well. thanks for the information! :)
@vala_lang Never been a big fan of using XML to define the UI. I try not to split things into multiple languages if I can.
@vala_lang Not multiple choice? Why?
@camelCaseNick good question. Will keep it in mind for next time. Though usually don't you have one preferred solution and not multiple?
@vala_lang Say, you might want to have a label with a generated string—then it makes sense to create the Gtk.Label in Vala itself as well.
And if you have a lot of those cases, you can start to want to just use Vala for everything, while you might've preferred dedicated UI files otherwise.
Or you could want to decide whether to use XML or Blueprint on a project-to-project level, e.g. Blueprint does not support constraint layouts, and does not integrate with custom XML syntax.