frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

XMLUI

https://blog.jonudell.net/2025/07/18/introducing-xmlui/
225•mpweiher•4h ago

Comments

mattlondon•3h ago
XML?

Why not web components?

skrebbel•3h ago
Focus, I'd assume.
cheschire•3h ago
No mention of XSLT? Feels like it would be highly relevant since many folks have not considered transforming or styling XML since those days, and would be interested in understanding the huge leap from that to this.

And given Jon Udell has written about XSLT before[0], I'm sure this was an intentional decision. Not sure I understand it though.

0: https://www.xml.com/pub/a/2003/08/13/udell.html

danielvaughn•3h ago
It’s probably irrelevant to an introduction. I think in this post the goal is to explain to a modern audience why something like this is beneficial. XSLT is part of the history here, but including it wouldn’t help sell the idea.
A4ET8a8uTh0_v2•2h ago
I am hesitant. On the one hand, visualization as presented might drive some interest ( and maybe adoption ), but XLST would definitely be useful for a person that would actually suggest it as a solution toa nything. Not to search very far, I myself found recently I have to not just massage XML data, but also 'sell it' to my various bosses.

I guess what I am saying is: I see your point. I am also saying ( as I dig in a little deeper ) that XLST would likely be helpful.

danielvaughn•2h ago
Oh yeah for sure, there should be somewhere on their site that does some kind of comparison to XSLT. Because as you pointed out, anyone who knows their history is going to wonder about it.

I’ve personally never written an application using XSLT, but I’ve researched it a bit. In my limited understanding, I believe XSLT was designed for transformations that happen on initial page load, or in a SSR context. For dynamic client interactions like the ones enabled by React, it wouldn’t suffice since it’s designed to recreate the entire document on every pass.

^ I could be very wrong about this, would love for someone more knowledgeable than me to chime in and correct me.

sheepscreek•3h ago
The performance of available XSLT translation engines would be a big consideration for me, especially in a hot-reload context to support fast iterations.
thechao•15m ago
That was my first thought: no XSLT 3 engine that I know of keeps an in-memory object that supports iterative retemplating on diff changes to the source. I think the closest to this is in the functional communities and their lenses. Given how "far" XSLT can reach through a document via Xpath, I don't think it's an easy-to-solve problem.
homarp•2h ago
if the target audience is 'citizen developer', aka Visual Basic (classic), I am not sure introducing XSLT is such a good idea.
majewsky•1h ago
Every time I've seen XSLT deployed, it was "that one hairball that no one besides the original author dares to touch". I'm not sure what it is about the technology, but it seems to either inevitably desolve into a complex mess or attract complexity fetishists. Either way, not something that would be an obvious choice for what OP is going for.
Quarrelsome•1h ago
its because it demands to everything to be effectively processed in a one liner and is locked into its early version due to a licensing failure (I've yet to work in an org that pays up). So if you work in XSLT, then you're stuck in 1999.

IMHO the pattern to improve XSLT is to call out into more useful languages like javascript, which ofc somewhat defeats the point of using it, but it is a useful pattern to slowly move away from it, when encountering it in legacy projects.

leptons•1h ago
>No mention of XSLT?

Nope, but they sure had to make 1/2 the content about "AI" (otherwise nobody would read it?).

HellsMaddy•1h ago
My first exposure to XSLT was sketchers.com: https://thedailywtf.com/articles/Sketchy-Skecherscom

Sadly it doesn't seem like they're using it anymore.

rand0m4r•3h ago
it reminded me of Adobe Flex (probably without its "bad" parts) - nice work, congrats to the developers.
ryandv•3h ago
See also XAML: https://en.wikipedia.org/wiki/Extensible_Application_Markup_...
vjvjvjvjghv•3h ago
XAML is an example for how not to do it.
dlachausse•3h ago
OpenLaszlo was even more similar to this…

https://en.m.wikipedia.org/wiki/OpenLaszlo

yoz-y•3h ago
As a programmer I found that all no-or-less-code approaches break up sooner than one would expect.

Eventually I chosen to always use the programming language itself for data fetching, looping and leave the templating (lit html in my case) to just passing in the data structures.

criddell•3h ago
I've also seen examples that are pushed way further than I thought possible. I'm thinking about some of the things people do in Excel.
airstrike•3h ago
Spreadsheet is a form of programming, so you can build anything there.
kibibu•2h ago
Not a common opinion, but one I happen to share.
layer8•2h ago
Spreadsheets traditionally don’t support iteration (loops) or recursion. In Excel you had to go the VBA route for actual programming.
airstrike•2h ago
In my hands they do
johnisgood•1h ago
That is the spirit.
accrual•1h ago
In the distant future:

    $ ./myapp.xlsx --port 8080
    My App listening on port 8080
    Loaded 1337 rows
aruggirello•54m ago
In other hands, I have seen Excel spreadsheet hundred-products pricelists become a freaking tangle of merged cells, multiple rows for products, spelling mistakes, multiple spaces everywhere, and price cells hand-formatted. And I had to export the contents to machine readable .csv...
cluckindan•24m ago
Let’s see an HTTP server in an Excel sheet.
airstrike•5m ago
[delayed]
djha-skin•2h ago
In 2010 I was working for a student computer support shop. We had web developers building our own ticketing system. In those days, I was told that everything in the UI was just tables. It was the only way they could get enough control on UI elements before div tags became widely spread.
rzzzt•1h ago
Also 1x1 pixel spacer GIFs.
aruggirello•59m ago
IE6 forced us to do crazy stupid stuff, like <div>&nbsp;</div> - and don't even start talking about <!-- ie "preprocessor like directives" -->
accrual•1h ago
I still love using tables in 2025 for webapps designed to run on old browsers. It's easy to render data into them (it's just headers, rows, columns) and they automatically have a cool, functional look (IMO).
toolslive•9m ago
IIRC, for a long time in the late 90s, Fedex was glued together with spreadsheets.
efitz•2h ago
All abstractions break down. The more the e difference in in expressivity or complexity between the abstraction and whatever it abstracts, the faster it breaks down.
djha-skin•2h ago
I don't agree. Rather than breaking down, abstractions in UI have stabilized and centralized. Everyone uses React.
majewsky•1h ago
React is not an abstraction, it's a framework. The core abstraction is "a component takes data only from its parent, and only passes data back up through provided callbacks". The exact spot where this abstraction breaks down is whenever you need to use a hook.
altairprime•52m ago
Eventually; but having something less complex than a general-purpose programming language to build prototypes and v1.0 products to test business-purpose fit is really important, too. Lets users have ideas and build them and try them out without having to engage a programmer. Hella valuable for workflow-process design, too. Best to have that one programmer on tap who can fix problems and recognize when it’s too unwieldy, of course.
WillAdams•3h ago
Impressive that they note:

https://docs.xmlui.com/

>This site is an XMLUI™ app.

but like pretty much every such system, it is assumed that one knows react and so forth, and how to manage a deployment --- if they really want to be compared to VisualBasic, what is the equivalent to:

- buy VB - install VB - launch VB - develop app - test/compile - distribute .exe

Probably I'm not the target audience, but if they had a "Minimal Working Example" of not just how to code, but also how to deploy an app (can it be run locally, say if I wanted something to keep track of my 3D printers and CNC machines?).

binarymax•2h ago
It’s painfully slow (on a newish mobile). While the concept is great for dynamic data, static docs are a terrible use case.
Animux•3h ago
XMLUI reminds me of XUL (XML User Interface Language)
vibbix•3h ago
I spent a summer working on XAML UI's for an internship, and recently dove back in as a side project to update some Windows specific apps that rely on WinForms(https://github.com/hass-agent/hass.agent). XML UI's are fairly underrated imo.
LudwigNagasena•3h ago
So it’s like JSX but with implicit imports and stringly-typed props?
danielvaughn•3h ago
Crazy, I just spent the past month designing an XML syntax for defining components. Weird coincidence.

One issue I see in their choices is the HStack approach. What’s great about flexbox in CSS is that the flex direction can change dynamically. Admittedly I haven’t read the full docs for XMLUI, but binding the direction to the markup likely means you can’t do that.

sheepscreek•3h ago
While flexbox is more powerful, those semantics would require prior knowledge of other CSS attributes and to develop an intuitive understanding of them.
sheepscreek•3h ago
I am super excited about the stuff we cannot see - I have a feeling the quality of engineering here is going to be solid + backed by consideration for the WYSIWYG programmers. Developing in Visual Basic is how programming became accessible for me as a kid.

I could do stuff with ease that had seemed like magic and completely out of reach without C++ and complex pointer gymnastics. So thankful to the movement and I sincerely hope this project can bring that novice-first approach to web programming that does not compromise on responsiveness and smoothness, while making sane compromises, and doesn’t hold you back.

Even more exciting is this - https://docs.xmlui.com/mcp.

It can reduce the amount of code tools like Claude need to generate (fewer tokens need to be generated) for a usable high-functioning UX/dashboard. I am going to start using this today.

judell•12m ago
We would love to know how that goes.
eviks•3h ago
> The project we’re announcing today, XMLUI, brings the VB model to the modern web

But this ugly XML was the worst part of the old UI building experience, and you've made it worse by turning into a poor man's programming language without all the tooling proper languages have to support the poor user.

The good part was the immediate visual feedback in a GUI editor where you couldn't break anything by forgetting to close an XML tag! And you didn't even have to know all the types to type in because you had a visible list of UI elements you could pick from

gryzzly•3h ago
how do u like jsx then?
llbbdd•1h ago
JSX has all the tooling available.
derelicta•3h ago
I knew folks were missing the Delphi-VCL and VB-WinForm experience. In a way, Flutter with Dart feels a bit like an attempt at bridging this gap between React-style web programming and those drag and drop UI and data builders.
thisislife2•3h ago
Seems like we keep reinventing the wheel - the previous version of of HTML, XHTML (eXtensible HyperText Markup Language) is a direct subset of XML. Also, related - Mozilla Firefox used to have something called XUL (XML User Interface Language - https://en.wikipedia.org/wiki/XUL - using which you could build complete desktop web applications with the Firefox / Gecko web engine (something that is now popular with the Chromium Embedded Framework). (After Mozilla abandoned the XUL codebase, it has been forked and is now maintained as the Unified XUL Platform (UXP) implementation - https://forum.palemoon.org/viewtopic.php?f=46&t=30840 ).
junon•3h ago
XUL felt magical when it came out. Was kind of sad when it got sunset or whatever happened to it. Felt like it could have been something great.
nailer•2h ago
I read this article originally as being a look back at some tech that somebody had made 20 years ago, that had a lot of interesting ideas, rather than someone suggesting yet another XML based UI mechanism.
eyelidlessness•1h ago
I don’t think this is a reinvention of XHTML. It’s definitely closer in spirit to XUL, but seems different enough still that I wouldn’t call it reinvention.

What seems particularly novel about this is that it’s taken the compositional approach of modern UI component libraries, and distilled it down to units of composition that can express a lot of behavior and logic declaratively. At least at a glance, that’s an impressive feat. Not necessarily in terms its technical capabilities (though that seems impressive too), but in terms of how it simplifies modeling interactive and data-driven UI.

j1elo•41m ago
Speaking of expressing a UI declaratively, and composition with web components... as a former Qt/QML dev, I always felt like Web innovations of the last decade and a half are just rehashes of the inspirations and ideas behind what Qt's QML started offering already since 2010.

Things like CSS Grid, which was a great and celebrated new toy in 2017, but as foreigner from the Web world, I still remember how I read those news and didn't know if they were kidding.

To the standards body that may concern: just copy QML and standardize it already! :-)

deanebarker•44m ago
I thought of XUL right away too.
righthand•3h ago
Cool looking but it uses JSON? Weird choice to slap another data scheme on-top of your data scheme. I will stick with XSLT for the time being as it is pure XML.

> return { name: stop.commonName, zone: getProp('Zone'), wifi: getProp('WiFi'), toilets: getProp('Toilets'), // A comma-separated list of line names that serve this stop lines: stop.lines ? stop.lines.map(line => line.name).join(', ') : '' }; }); }

silverlight•3h ago
Recently used a lot of HaxeUI for a game and it felt similar to this. A lot of components included out of the box that “just work” with some basic styling. And you can use CSS styling on top to further customize as needed. Works across a lot of different platforms as well.
hollander•1h ago
I read that as Haskell and I definitely think HaskellUI would solve all problems. /j
zigzag312•3h ago
> XMLUI wraps React and CSS and provides a suite of components that you compose with XML markup.

So this goes from XML → React → XML (HTML)?

Are there any studies actually showing XML is easier to write that a scripting language? In my experience, XML is equally hard to write while being more limited.

agnokapathetic•3h ago
reminds me of Macromedia MXML (used in Flash, Coldfusion and Flex)!

https://github.com/apache/royale-asjs/blob/develop/examples/...

DonHopkins•12m ago
OpenLaszlo was an eariler, more powerful, more fun, open source alternative to FLEX. It's obsolete now that Flash is dead, but I really got in the "zone" with it.

Residential, Commercial and Industrial zones:

https://www.youtube.com/watch?v=8snnqQSI0GE

https://github.com/SimHacker/micropolis/tree/master/laszlo/m...

Here's some stuff about OpenLaszlo and other related ui systems:

https://news.ycombinator.com/item?id=21841054

DonHopkins on Dec 20, 2019 | parent [–]

My remark was just an old Java joke I repurposed for Ant! "Java is a DSL for taking large XML files and converting them to stack traces." -Andrew Back

https://www.reddit.com/r/programming/comments/eaqgk/java_is_...

But in all seriousness:

OpenLaszlo used XML with embedded JavaScript in a way that let you extend XML by defining your own tags in XML+JavaScript. I've done a lot of work with it, and once you make your peace with XML (which seemed like a prudent thing to do at the time), it's a really productive enjoyable way to program! But that's more thanks to the design of OpenLaszlo itself, rather than XML.

https://en.wikipedia.org/wiki/OpenLaszlo

OpenLaszlo (which was released in 2001) inspired Adobe Flex (which was released in 2004), but Flex missed the point of several of the most important aspects of OpenLaszlo (first and foremost being cross platform and not locking you into Flash, which was the entire point of Flex, but also the declarative constraints and "Instance First Development" and the "Instance Substitution Principal", as defined by Oliver Steele).

https://en.wikipedia.org/wiki/Apache_Flex

https://web.archive.org/web/20190318072102/https://blog.oste...

The mantle of constraint based programming (but not Instance First Development) has been recently taken up by "Reactive Programming" craze (which is great, but would be better with a more homoiconic language that supported Instance First Development and the Instance Substitution Principle, which are different but complementary features with a lot of synergy). The term "Reactive Programming" describes a popular old idea: what spreadsheets had been doing for decades.

OpenLaszlo and Garnet (a research user interface system written by Brad Myers at CMU in Common Lisp) were exploring applying automatic constraints to user interface programming. Garnet started in the early 1990's. Before that, Ivan Sutherland's Sketchpad explored constraints in 1963, and inspired the Visual Geometry Project in the mid 1980's and The Geometer's Sketchpad in 1995.

https://en.wikipedia.org/wiki/Reactive_programming

http://www.cs.cmu.edu/afs/cs/project/garnet/www/garnet-home....

https://en.wikipedia.org/wiki/Sketchpad

http://math.coe.uga.edu/TME/Issues/v10n2/4scher.pdf

https://en.wikipedia.org/wiki/The_Geometer%27s_Sketchpad

I've written more about OpenLaszlo and Garnet:

What is OpenLaszlo, and what's it good for?

https://web.archive.org/web/20160312145555/http://donhopkins...

>Declarative Programming: Declarative programming is an elegant way of writing code that describes what to do, instead of how to do it. OpenLaszlo supports declarative programming in many ways: using XML to declare JavaScript classes, create object instances, configure them with automatic constraints, and bind them to XML datasets. Declarative programming dovetails and synergizes with other important OpenLaszlo techniques including objects, prototypes, events, constraints, data binding and instance first development.

Constraints and Prototypes in Garnet and Laszlo

https://web.archive.org/web/20160405015129/http://www.donhop...

>Garnet is an advanced user interface development environment written in Common Lisp, developed by Brad Meyers (the author of the article). I worked for Brad on the Garnet project at the CMU CS department back in 1992-3.

More about TCL/Tk, OpenLaszlo, Garnet, constraint programming, history of constraints: Coco KVO, Objective Smalltalk constraints, and more Sutherland, Sketchpad, Geometers Sketchpad, Knowledge Representation frames, push vs pull constraints, etc:

https://news.ycombinator.com/item?id=17360883

guestbest•3h ago
Reminds me of renaissance for openstep.

https://github.com/gnustep/libs-renaissance

lukev•2h ago
Oh this brings me back. My first real coding job in 2003 was with a startup building dynamic user interfaces with XML, rendered with XSLT from the underlying data.

It wasn't perfect, but it did feel correct, in the sense that a UX should be ultimately a pure function of data. Which is an idea that has never gone away.

vidarh•2h ago
2005-2007 I worked on a webapp where the app layer rendered to XML, and then optionally server-side applied an XSLT transform to generate either HTML, RSS, or Atom, but you could also request the raw XML (and browsers could apply the XSLT client side, but for debugging/testing it was great to be able to then also see the underlying XML.

It had some benefits in terms of enforcing strict separation as well, but it was also painful to deal with the many deficiencies of XSLT (e.g. try reformatting dates...) that meant the XML ended up having annoying redundant values where it was easier to provide multiple versions of the same value than doing the conversions in XSLT.

These days I'm doing something similar by having apps return JSON and having the I built dynamically from the JSON with javascript, and I like that better than the XML => XSLT as much as "in principle" I agree with you that the pure approach of XSLT feels "correct". It's just too painful to apply as-is.

ako•2h ago
This makes a lot of sense: with AIs generating a large amount of code, the challenge moves towards validation and testing. If you generate towards a higher level of abstraction, there's less code and less moving parts to be reviewed and validated. Think of it as low-code/DSLs for GenAI, still code, but with less technical details to review and test.
elviejo•2h ago
I applaud the idea of bringing back the Visual Basic model to the web. Again I don't expect people under 45 to remember how easy it was to develop a user interface that reacted to user actions.

I just don't see the need to create a new language to do it.

Firefox had XUL. And macromedia had Flex.

Flex was amazing it had an XML version and an OOP one.. that where two views of exactly the same language.

mikestew•2h ago
Again I don't expect people under 45 to remember how easy it was to develop a user interface that reacted to user actions.

This recent HN submission gives a pretty good idea: https://news.ycombinator.com/item?id=44621102

api•2h ago
There was so much work done in the 80s and 90s on RAD — rapid application development — that was all thrown in the trash when the web hit.

20+ years later we’ve managed to finally build up the right combination of hacks to make the web a passable application platform but it still feels like you’re forcing it. Because you are. The web was not designed to be an app platform and it shows. Still.

dxroshan•1h ago
Great point!
thom•2h ago
Just like there's a massive community of Microsoft-adjacent technologists who still think C++ can do new and exciting things, there's a similar community who think XML components with declarative databindings are also going to make a comeback. I think (with some nostalgia and sadness) both of these ideas have been soundly thrashed in the marketplace of ideas.
greatgib•2h ago
The author is probably too young to have experienced the crap of XML based interface. Like XUL and co.

But with another stack, I miss how good and easy it was to do great interfaces with Delphi in the good old time!

spenrose•2h ago
"Since 1995 nearly all of my professional work has been enabled by, and published on, the web." https://jonudell.net
greatgib•2h ago
I stand corrected: The Microsoft era (2007-2014) In Jan 2007 I joined Microsoft as an evangelist.

Exactly at the time that Microsoft pushed for the XAML crap... So indeed not reinvented the wheel, just not having giving it up despite the complete failure of it.

fghorow•1h ago
Ummm, errr. Jon Udell[1] was a columnist for Byte (RIP) magazine. He has been around a looooooong time.

[1] https://en.wikipedia.org/wiki/Jon_Udell

tbeseda•2h ago
I don't mind XML but the release is 4.23 MB. Minified. There are 90 dependencies (931 fully resolved).

Also, the Docs link to home.xmlui.com and don't resolve

efitz•2h ago
This seems like a neat idea that is 20 years too late.
fxtentacle•2h ago
In my opinion, the best GUI approach is still JUCE. Every UI element is a C++ class with a drawing function. You create new UI elements by composing other elements to create another C++ class, for which the editor will auto-generate the source code. For buttons, you have a large if...else... area in the drawing function to handle different states like hover, pressed, active, disabled, etc. Behind the scenes, a thin drawing library will use Metal/OpenGL/DirectX as needed.

I find it refreshing that everything is imperative. You can put a breakpoint anywhere and you'll see when it gets called, with which parameters, by whom. You can also export intermediate rendering states to imdraw. Plus it's almost pixel-perfect (except for font antialiasing) on all platforms.

The XML variant being peddled here is, in my opinion, exactly what I usually try to avoid: framework-dependent magic. I'm 100% sure that 3 framework upgrades down the line, the layout will be slightly off. Because it was never you owning the layout, it was always you begging the framework for its consideration. The only thing that somewhat mitigates this issue with Electron is that it uses "old" technology. CSS isn't going to change much by itself anymore.

CharlesW•2h ago
I've never heard of JUCE before, but from what I understand JUCE is more like the web platform itself (juce::Component is like DOM or canvas elements), while XMLUI is more appropriately compared to declarative UI systems built on top of JUCE (GUI Magic, JIVE, or VITRO).

Declarative and imperative UI approaches aren't mutually exclusive, and it's common for software to leverage both (e.g. SwiftUI and UIKit).

righthand•2h ago
I haven’t tried JUCE yet but I miss the days where everything was a C++ class in Qt. Everyone clamours for a templating language but:

class MyButton extends QObject {

…

$button = new Button();

$button->color = “blue”;

$icon = new Svg();

$layout = new QtHorizontal();

$layout->push($icon, $button);

$this->layout = $layout;

…

}

This to me is much more readable than fiddling with stacked, embedded, and nested mustache/XML syntax split across files. Templating languages only really guarantee one unique thing about understanding the code: “Is my module embedded under the correct parent module?”

cxr•2h ago
> to me this feels like an alternative to the JavaScript industrial complex that ticks all the right boxes

The goal is admirable, but the execution and implementation is, in a word, absurd. From the XMLUI website:

> XMLUI provides the glue that binds the React ecosystem into a declarative model.

This negates the raison d'être of React, which is to bring the development style of immediate mode UIs to the browser—that's the fundamental driving factor behind the creation of React. Components are incidental. (Web browsers in fact do components just fine, with native support for custom elements and shadow DOM—which, along with flexbox, is a descendant of XUL, the other 90s-era technology that worked the way the XMLUI authors lament isn't around.)

The purpose of React was to bring the development style of "immediate mode" UIs to the browser[1], which for better or worse inherently has a "retained" model of the UI that developers writing in-browser apps would have to deal with. So now with XMLUI, you have React trying to paper over the fundamental nature of the DOM to make it feel like it's immediate mode instead (and all the fakery involved with that), and you have XMLUI choosing to build upon React and do these retained objects instead—aligning with how the browser actually does things underneath React!

The "The Backstory" section on the XMLUI landing page is worth a look and really drives the point home (along with Jon's admission in his blog post that he's never been a React developer):

> It began with a relatively small effort to add web-based admin interfaces to some of the company’s products. This resulted in the core engineering team — experienced backend developers whose interactions with UI technology were limited to old-school battleship-gray Visual Basic, Delphi, or .Net/Winform — being surprised by the complexity of modern web development.¶ Calls for simplicity and easy/intuitive tool support were met mostly with blank stares from the React guys on the other side – and the designer, UX guy, and JavaScript folks on the server side of things.¶ But the /n software team refused to take no for an answer, and more than two years of work from a team of Javascript/React wizards resulted in the new semantic layer that is XMLUI.

"Simplicity" this is not. Ditch React. You don't need it. You're actively working against it. (And worse, it looks you've put yourself at the whims of hired "experts" who exemplify the stereotype of the React-only programmer who never learned the fundamentals, and in this case can't even spot that you're asking them to undo React.)

1. <https://www.youtube.com/watch?v=8ZlN07IvoPI&t=2131s>

DonHopkins•1h ago
Great points! I love Nic Barker's frantic hand gestures while he explains how React works in that video. "Oh gosh, you don't want the hear this! Ha ha *grin*!":

https://youtu.be/8ZlN07IvoPI?t=2654

There was an interesting hn discussion about immediate mode a few years ago:

Immediate mode GUI

https://news.ycombinator.com/item?id=19744513

http://behindthepixels.io/IMGUI/

I wrote up some of my own opinions:

https://news.ycombinator.com/item?id=19745034

>DonHopkins on April 25, 2019 | parent | context | favorite | on: Immediate Mode GUI

>Immediate mode GUI's don't let you apply useful object oriented programming techniques like subclassing and prefabs (persistence) to implement and configure custom components.

>Properly object oriented retained mode GUIs let you subclass components to implement custom views and event handling, and develop and publish reusable prefabs and libraries of pre-configured, stylized, specialized component. [...]

>I don't know what you mean about easily composing immediate mode API's, or agree that different immediate mode APIs don't need to know about each other. They depend on a lot of behind-the-scenes implicit hidden state (practically a hidden shadow-DOM-like retained mode), so I suspect in many cases they'd walk all over each other (especially text editors dealing with input focus and keyboard navigation). Unity3D has two immediate mode APIs, one for the editor and one for runtime, and they sure don't mix. [...]

>How would you write a functional extension for Unity3D's old immediate mode GUI that let you embed an ACE code editor in a Unity WebGL app? What would the API and state management even look like? How could you make it platform independent?

>And even if you solved all of those problems with an immediate mode API, by its very nature it still wouldn't enable you to build GUIs in the interface editor or store them in prefabs, and you'd still have to recompile you app (which can take half an hour with Unity) every time you wanted to tweak the user interface (which is why I like programming Unity apps in JavaScript as much as possible). [...]

>Embedding object oriented "retained mode" widgets with different APIs inside of each other is old hat and common for backwards compatibility. Whenever you write a new GUI toolkit, embedding widgets from the last toolkit is one of the first things you do (including recursively embedding widgets from the toolkit-before-last).

>Concrete example: Microsoft lets you embed old fashioned OLE controls in Windows Forms / Presentation Foundation applications, which might be implemented in MFC themselves. And MFC is all about embedding old Win32 widgets implemented in C, and newer OLE components implemented in Visual Basic or whatever, in venerable C++ MFC user interfaces. Say what you want about how much Win32/MFC/OLE/WF/WPF sucks, and I'll wholeheartedly agree, but if you're running Windows, you probably have widgets on your screen using several different retained mode APIs embedded more than two levels deep right now. [...]

>The problem with immediate mode that is you have to come up with somewhere to store and retrieve any values or state required on a case-by-case basis (including the edited value itself, and other view state like scrollbar state for text editors, etc), and that tightly couples your component function with whatever's using it, so they're not very reusable or simple. With OOP, the object has its own place to store that stuff, which is cleanly decoupled from whatever's using the component.

>Then there's the issue of event handlers. Some user interface components just aren't so simple that they only have one true/false return value like buttons. Text editors can notify on value change, end edit, select, deselect, etc. And Unity's retained mode GUI supports persistent event handlers that let designers hook up events with methods of objects with parameters, without writing or recompiling any code.

>And there's also a lot more to layout that you can easily express with an immediate mode GUI. Sometimes you have to measure a bunch of things and align them in various ways, like grids or flex layouts, and adapt to the screen size and other constraints (i.e. responsive design), and that's really hard to do with immediate mode, while retain mode has a rich set of layout components you can use and extend. And there's nothing like XCode's layout constraints for immediate mode. [...]

>A perfect example is TextMesh Pro's text editor. It has so many different (and useful) features and parameters and callbacks and ways to configure it, and it keeps so much state in order to redisplay efficiently with the fewest number of draw calls and reformatting, that it would be extremely impractical and inefficient and unwieldy for it to use an immediate mode API. Especially with C# positional arguments instead of Pythonic or Lisp-like optional unordered keyword arguments.

>When you encapsulate your immediate mode layout in a class, or write an engine that interprets (i.e. JSON) data to drive the immediate mode API, or use reflection in your wrapper functions to dispatch event callbacks and bind your widget data to your model data, you're just rolling your own informally-specified, bug-ridden, slow implementation of half of retained mode. (See Greenspun's tenth rule.)

DrStartup•2h ago
XUL! why not just use htmx and the platform?
cluckindan•20m ago
Because using htmx is asking to get defaced via XSS, or worse. Security is an afterthought for the project, which is evident from the placement of the related documentation.
general1726•2h ago
You can also use WPF/Avalonia (.NET) or MAUI (.NET) You will see why XML for UI is beautiful but nightmare to debug if something is off and crashing.
franze•2h ago
Those who do not understand (or remember) XUL are forced to reinvent it.

see https://www-archive.mozilla.org/xpfe/xui.html

cbsmith•2h ago
Pretty sure Jon Udell remembers XUL.
judell•11m ago
I do indeed.
CharlesW•1h ago
If XMLUI is a reinvention of XUL, then XUL* is just a reinvention of the many XML-based UI markup languages before it.

* Fun fact: XUL was conceived at Netscape. Mozilla adopted it for XPFE.

djha-skin•2h ago
I was training a JavaScript developer to do DevOps. I described the C(++) GUI libraries to him, GTK and Qt. His reaction: "So you can't make the UI look exactly the way you want it to. You can't dial it in."

This will largely fail to gain market share just like PaperGUI[1] and Polymer[2] did (much to my chagrin). UX and web developers simply feel the need for more control over the UI.

However, I do find it interesting that there is enough interest in this trend that people keep recreating tools for it over the years. I wonder why.

1: https://google.github.io/paper-gui/

2: https://polymer-library.polymer-project.org/1.0/docs/about_1...

mattmcknight•2h ago
React is so unnecessary. Would make more sense to do this with web components. The event model of VB, before .Net, was much more coherent.
mnafees•2h ago
I wrote Qt C++ for 7 years as an open source contributor to KDE. This reminds me of QtWidgets’ .ui files—custom XML files following a specific schema. Later, Qt introduced QML, which I personally found unintuitive, and over time I lost interest in Qt altogether. That said, I still think XML for UI definitions makes sense, and it’s understandable that some larger environments continue to use it.
hermitcrab•1h ago
Some of us are still programming in Qt using just C++ and .ui files. Never bothered to switch to QML. I wasn't convinced there were enough advantages to make it worth the effort.
zkxjzmswkwl•1h ago
So Winforms for React.
doug_durham•1h ago
The ergonomics makes my eyes bleed. I think we can do better.
tomsonj•1h ago
android layout xml is great, glad to see more broad attempts
cubefox•1h ago
Unfortunately this doesn't provide a comparison to similar solutions, like XUL or htmx.
zamalek•1h ago
XAML (at least the tighter-scoped Silverlight incarnation of it) was an absolute joy to use - if you used it correctly. It was an absolute monster if you used it in the most obvious (and incorrect) way. That's probably the reason other than HTML5 that it fell off: good tools steer novices into the pit of success, and XAML really didn't do that at all.
theknarf•1h ago
So you built a worse alternative to React, on top of React?
stillpointlab•1h ago
This looks (at a glance) similar in many ways to Adobe's defunct MXML [1] which was the backbone of the Flex platform built on Flash.

Apparently this lives on in Apache Royale [2]

Using XML for an user interface description language is quite common, from XUL to XAML to JSX. In my experience, XML is well suited to this task.

1. https://en.wikipedia.org/wiki/MXML

2. https://apache.github.io/royale-docs/features/mxml

sirjaz•1h ago
This reminds me of xaml with css thrown in. It is almost like this validates Microsoft's blazor plans with C#
Neywiny•46m ago
Almost immediately is the reason I don't like using this stuff. A hardcoded default value. There are so many things these UI generators can almost do but don't, and a default value for a dynamic selection is often one of the trickier ones to get right.
mrweasel•45m ago
Using VB as a reference seems incorrect. Much of the appeal of Visual Basic, and Delphi, was the UI builder. Just click a button to create new project and you already had a window ready to go. Drag and drop in components, click buttons and what-not to wire up functionality. The barrier to entire was so incredibly low, having to edit XML files feels miles away from that ease of use.

That being said Visual Basic also create some absolutely terrible programs.

jeroenhd•34m ago
Before Compose took over as the new direction for Android app development, the Android Studio designer IDE had a very VB6-style designer where you could drag and drop components, while the underlying UI files were all XML based. The callback generation wasn't as easy as with VB, and different phone sizes meant you had to deal with resizing (which VB applications usually just didn't bother with), but the experience was pretty good.

These days you've got Gambas for a free and open source VB, including the terrible language, but in my experience the looks are a bit off when you design on one desktop environment and run the application on another.

sp0rk•12m ago
> These days you've got Gambas for a free and open source VB, including the terrible language, but in my experience the looks are a bit off when you design on one desktop environment and run the application on another.

There is also Lazarus[1], which uses Pascal but feels closer to what I remember of the VB6 experience.

1: https://www.lazarus-ide.org/

rao-v•43m ago
I kind of want Python to have a desktop / web neutral library that does this and always am annoyed to learn it does not exist.

Do folks understand why?

jeroenhd•36m ago
XML UI is all over the place. I'm working with some legacy code using JSF with some extensions and it's pretty much everything described here. There's a Java server involved so it doesn't work with saved pages (but it automatically takes care of any backend calls, so unless you want an offline-first app that can be a benefit actually). I'm pretty sure ASP.NET, or whatever Microsoft calls it these days, works very similarly.

The frontend pendulum keeps swinging back and forth between serverside rendering and clientside rendering so maybe in a few years we can reinvent ASP/JSF and call it revolutionary again.

jug•27m ago
Web standards are so powerful today with all the browser native form components etc, so I think one should just exploit that one and use XSLT (https://caniuse.com/?search=xslt) if you want to create an own "UI markup language". It'll render straight to everything that your browser supports, which is a lot. Then just use CSS to style it however you wish if you want to. What's nice about this approach is also that you can create a true domain-specific markup language, which will always be more clean and compact than a generic one.
cgannett•27m ago
I am simultaneously in the seemingly opposite camps of "haha we reinvent HTML lol" and "Actually this sounds immediately useful to me".

To be human is to be multitudes.

cluckindan•25m ago
If this doesn’t use a compiler, the ”when” feature looks like it will require 'unsafe-eval' and potentially 'unsafe-inline' to be enabled in content security policy, which will disable browser XSS protections. Not optimal for an easy-to-use component system intended for display of remote data.

Edit: I don’t see a CSP on the dogfooded homepage so I would assume this is an issue.

lstroud•15m ago
My recollection of XUL was that it was great when it worked, but horrific to debug.

It wasn’t also easy to make a living fixing bad VB apps (or going back to Delphi).

I’m not saying that components are a bad idea, but the 90s implementations didn’t quite realize the dream.

No One Knows Anything About AI

https://calnewport.com/no-one-knows-anything-about-ai/
1•ahamez•3m ago•0 comments

QuakeNotch, Quake Terminal on your MacBook's notch

https://quakenotch.com
1•rohanrhu•10m ago•0 comments

The Leverage Cycle

https://www.journals.uchicago.edu/doi/epdf/10.1086/648285
1•Anon84•10m ago•0 comments

Think on Your Limits

https://substack.com/home/post/p-168780438
1•prograph•13m ago•0 comments

Community radio stations are collateral damage as Congress cuts NPR funding

https://www.npr.org/2025/07/20/nx-s1-5469908/trump-npr-public-community-radio-corporation-broadcasting-federal-funding-cuts
3•RF_Enthusiast•15m ago•1 comments

Ask HN: Having terrible time with paid versions of ChatGPT and Claude

2•gist•20m ago•2 comments

Rising Graduate Joblessness Is Mainly Affecting Men

https://www.edwardconard.com/macro-roundup/the-unemployment-rate-for-recent-male-college-graduates-22-27-has-risen-from-5-to-7-recent-male-graduates-are-now-unemployed-at-the-same-rate-as-their-non-graduate-counterparts/?view=detail
6•andrewstetsenko•25m ago•4 comments

Chess grandmasters do not burn 6000 calories per day

https://substack.com/inbox/post/167018896
2•fanf2•26m ago•1 comments

Show HN: Posthuman Framework for AI Consciousness Thresholds and VR Emancipation

https://kanarya.group/aposthumanframework/
2•rudyon•27m ago•1 comments

A browserless HTML testing library for Python

https://github.com/valentinogagliardi/unbrowsed
1•theptip•28m ago•0 comments

The Medieval World Revealed

https://worldhistory.substack.com/p/the-medieval-world-revealed
1•crescit_eundo•29m ago•0 comments

Adblockers stop publishers serving ads to (or even seeing) 1B web users

https://pressgazette.co.uk/marketing/adblockers-stop-publishers-serving-ads-to-or-even-seeing-1bn-web-users/
3•thm•34m ago•1 comments

Lessons from My Solo Journey to Become the Founder I Wish I'd Met Earlier

https://nmn.gl/blog/greatness
1•namanyayg•35m ago•0 comments

GingerBill – Tools of the Trade – BSC 2025 [video]

https://www.youtube.com/watch?v=YNtoDGS4uak
1•gingerBill•36m ago•1 comments

Image Search: An internet-powered image search and conversion for C64 OS

https://c64os.com/c64os/imagesearch
1•ibobev•41m ago•0 comments

RFC: Enable Btrfs as a Tech Preview

https://github.com/AlmaLinux/ALESCo/pull/9
3•l2dy•44m ago•0 comments

Researchers develop hull-attached sensor system for underwater radiated noise

https://techxplore.com/news/2025-07-hull-sensor-underwater-noise.html
1•PaulHoule•47m ago•0 comments

Employers planning to pass the rising healthcare costs to the employees in 2026

https://www.cnn.com/2025/07/16/economy/health-care-costs-employees-2026
8•paulpauper•48m ago•2 comments

Show HN: I made a simple free app that gives you professional headshots

https://photoguruai.com/free-tools/free-ai-headshot-generator
1•devhe4d•48m ago•1 comments

Stop Claude Code from Asking Permission Every 30 Seconds

1•IgorGanapolsky•48m ago•0 comments

Ask HN: What are experienced engineers leaving the field due to LLMs going into?

1•throwawayoldie•49m ago•1 comments

Texas ranks as No. 1 state with the most people in financial distress

https://dallas.culturemap.com/news/innovation/texas-ranks-as-no-1-state-with-the-most-people-in-financial-distress/
8•paulpauper•49m ago•1 comments

The next ZX Spectrum will also be a Commodore 64

https://www.stuff.tv/hot-stuff/the-next-zx-spectrum-will-also-be-a-commodore-64/
2•ibobev•50m ago•1 comments

Hacking a Toniebox

https://www.schafe-sind-bessere-rasenmaeher.de/tech/hack-all-the-things-toniebox/
14•LorenDB•51m ago•4 comments

Mathematical Foundations for Finance [pdf]

https://metaphor.ethz.ch/x/2021/hs/401-3913-01L/auth/lethz/notes/mff_script/lecture_notes.pdf
1•ibobev•54m ago•0 comments

Master Foo and the Script Kiddie

https://soda.privatevoid.net/foo/arc/02.html
16•RGBCube•54m ago•6 comments

Show HN: Kriegspiel Tic Tac Toe

https://kttt.io/
1•fishtoaster•54m ago•0 comments

Cosmosapien CLI / Dumb LLM Orchestrator

https://github.com/musa92/cosmosapien-cli
1•Musagayev•55m ago•0 comments

Insights on Teufel's First Open-Source Speaker

https://blog.teufelaudio.com/visionary-mynds-insights-on-teufels-first-open-source-speaker/
6•lis•56m ago•0 comments

Assistants Aren't the Future of AI

https://blog.sshh.io/p/assistants-arent-the-future-of-ai
1•sshh12•56m ago•1 comments