I have railed against the incredibly poor design of QML for years. Even wrote about The Death of Commercial Application Frameworks because just like the RAD (Rapid Application Development) tools of the 1990s, they have run their course. If you want to read more about the RAD tool era read this book. Only in a shop using Agile could such a horrible design ever get considered. In a real Software Engineering shop that uses Waterfall SDLC the design of QML would have failed on paper. Keeping all of the plates spinning in a design like this
Using it in a medical device is almost guaranteeing patients will have adverse outcomes, possibly die. Why? You cannot control garbage collection. I’m not the only one who has spent days (in some cases months) sweeping up behind someone who thought using QML was a good idea, just read this guy’s post.
Why This Post Today?
Because a dude who used to . . . ah . . . reprimand me for calling QML a hand polished turd in the qt-interest mailing list (where it rightly should be pointed out each and every day) finally had a project failure with QML. I don’t think he had used it prior to that. Here is what was in the mailing list:
<hot take>
I?d like to chime in with a real world application that we have been
developing. It has a VTK based 3D rendering engine inside a Qt application
that is widget based. It did not start out great. We burnt 10 months with
3~4 engineers trying to develop this application as a QML desktop
application and it was just one thing after another in QML that just would
stop us in our tracks. QML on Desktop just isn?t as mature as Widgets on
the Desktop and suggesting for someone to rewrite a generally well working
desktop application to QML is not just a huge disservice but would be a
huge mistake. We ended up taking the last 2 months of the contract and spun
up a widgets based application and got more features completed for the
client in those 2 months than we did with 10 months of QML development. I
know things change but after that little exercise I am not sure anyone
would ever convince me to try QML on the desktop again. Period. If QWidgets
goes away we would probably just move to another language all together
rather than try QML. QML on Phones and tablets? Sure. Go for it. Desktop,
stay away. Far Far away.
</hot take>
Pay special attention to the time frames. After 10 months with the “more efficient” QML, the project was an abject failure. In 2 months using widgets they completed a 12 month project.
Granted he does scientific software. Rarely any human life at risk, just billions of dollars. Some of us are old enough to remember Faster, Cheaper, Splat! Not the type of software he writes, but you get the drift.
There Can Be Only One
Highlander was very informative for software engineers, there can be only one. Any architecture that introduces multiple lanes of ownership is a failed architecture. Software engineering shops using SDLC would have killed this design on paper. If you need to use an interpreted language, it has to exist in its own process communicating via message queue, database, or mailbox with other processes. The single-thread-y-ness main event loop architecture must go the way of the punched card and paper tape.
Read The Death of Commercial Application Frameworks if you want to know where the industry is headed next. The names of the tools may change over time, but not the type.
It took him a while, but he finally got there. My hat’s off to you sir!
The rest of you consider an infusion pump or surgical robot for a moment.