[Interest] Porting Qt to our RTOS

Roland Hughes roland at logikalsolutions.com
Sat Sep 29 23:35:10 CEST 2018


On 9/28/18 9:26 AM, Giuseppe D'Angelo wrote:
>>> I am investigating how to bring Qt to our INtime RTOS. The INtime Distributed RTOS runs on standard PC hardware as a multicore AMP OS (no SMP and not POSIX compliant). Currently the RTOS has only a text console output based on INT10 services. The RTOS is fully preemptive, with strict priority based scheduling, managed process services with rich IPC services. The development environment is tightly coupled with MS VC (2008 and on) with ANSI C and C++11 language support. The RTOS is very stable and been commercially deployed for decades. It lacks a means for graphical programming, mostly for industrial controls application. What is the means to port Qt to this RTOS? We're not intending on building out OpenGL ES 2.0 unless absolutely necessary. I've read some marketing materials about Qt on MCU, however the details seem very thin. It's not Windows, Linux, OSX, Android, QNX, Integrity, or VxWorks... how to go about getting this done?
>> The short answer is that you shouldn't.
>>
>> The AGILE processes behind Qt development
> 1) This is an unproven and unwarranted assertion about whatever way Qt
> is developed. Since most of upstream development happens behind close
> doors at TQC, please refrain from making such statements, unless you
> happen to be working at TQC and can comment on the matter. And, even so,
> other development (e.g. the one*I personally*  do on Qt) does not happen
> to be using agile processes.
>
>
> 2) This is a loaded sentence. Not only it's off-topic regarding the
> matter at hand ("how do I get Qt to run on another OS"); not only it's
> written to be provocative; but the_unwritten_  major premise of the
> syllogism is that agile processes are "bad" (for whatever reason). This
> major premise has not been established in this community.
>
> And no, I don't care at all if agile development is better or worse than
> some other model; so do not bother me with 300 links about how agile has
> failed in the last 30 years of software development.
>
> What I care about is not having loaded and off-topic sentences, with
> unwarranted claims, on this mailing list. I'm arguing about the logical
> fallacy, not the truth of the statement. Using that fallacy is
> disrespectful.

Syllogism, nice word. For those who did not wish to look it up

Logic A form of deductive reasoning consisting of a major premise, a 
minor premise, and a conclusion; for example, All humans are mortal, the 
major premise, I am a human, the minor premise, therefore, I am mortal, 
the conclusion.

Well, you may not care about such a discussion nor wish to have it, but, 
since your ENTIRE second point is based on:

This major premise has not been established in this community.

We will be doing a bit of that in a moment. As to point one.

True software engineering requires creation of The Four Holy Documents 
up front.

     1) Business Requirements Document (BRD)
     2) System Requirements Document (SRD)
     3) System Architecture Document (SAD a.k.a. System Architecture 
Specification SAS)
     4) System Specification Document (SSD a.k.a. Functional Specification)

These are required for EVERY release. The only thing which does not 
require it is a patch which fixes one or more bugs WITHOUT ANY NEW 
FEATURES OR ENHANCEMENTS THROWN IN.

Anything which does not create The Four Holy Documents up front is one 
of the 32767 flavors of AGILE trying to call itself something other than 
AGILE.

The System Architecture Document takes a long time. It also requires a 
heavy hitter to create. In here you will find specified memory sharing 
rules and the one technique allowed as well as messaging mandates and 
many other things.

The SSD for an API like Qt specifies the classes, parameters of each 
method and return values. Basically, everything you see here:

https://doc.qt.io/qt-5/qstring.html

gets written before the first line of code. It is not generated from 
Doxygen comments or some other means later.

Why?

Because code reviews aren't silly little check-in things. Code reviews 
under true software engineering require a formal process with an 
external secretary completing a formal document. MOST IMPORTANTLY you 
review the code not for coding standards or some little check-in before 
continuous integration build, YOU REVIEW THE CODE FOR VIOLATIONS OF THE 
SAD OR THE SSD.

I need to point out a recent statement from Alex

===

and last but not least there are things which are too risky to fix 
because they have an extremely high potential to break other things

===

The type of bug Alex describes here requires one of two things to be true.

1) It violated the SAD

2) It violated the SSD

It cannot happen when true software engineering principals are used and 
The Four Holy Documents are created up front.

It does happen with AGILE and the 32767 flavors of AGILE, many of which 
choosing not to be called AGILE.

True software engineering put a man on the moon and returned him safely 
to earth when the only programming languages we had to work with were 
Assembler and FORTRAN. We haven't done that in a post OOP - AGILE world. 
Launching a mechanical probe somewhere isn't anywhere near as difficult 
as launching a tin can full of humans at a rock, making it land, 
launching it and have the humans land back on earth alive, even if the 
"landing" happens to be a splash down in the ocean.

As Alex stated in that same message "Qt is huge."

It has loooooong since passed the size and complexity of anything which 
an reliably be developed and maintained without true software 
engineering. The 32767 flavors of AGILE cannot keep it stable.

Did you not listen/read krzysiek.kawa's post?

===

I really hate to be "that guy" again, but I'd just like to know what's 
going on.

Some time ago I complained about bugs not being resolved for many
major releases. I was then told my reports were P2 or lower and I
can't expect them to be taken care of. That sucks for me but I can
understand to some degree.
But now a new release is out and I still have three P1:Critical
issues, reported 3 or 4 releases ago, all being regressions btw, and
nothing is fixed. There's a next major release around the corner and
it doesn't seem to fix these either.

===

I have not looked at those specific bugs, but, those types of "forget 
about them until that release is unsupported" bugs can't happen with 
true software engineering and The Four Holy Documents. Regressions like 
that must violate either the SAD or the SSD so they never pass review.

Even if ALL of the reviewers were drinking at a bar instead of reviewing 
code, true software engineering requires a QA team which works 
__completely__ from The Four Holy Documents creating a test plan. (For 
those who don't work in FDA regulated environments, this is _exactly_ 
what is required. Reports differ about whether it involves prison time 
or just a huge fine and banning from the medical device world, but, they 
all agree violating it isn't trifled with.

>> You should read up on the many discussions (one even
>> within the past week) about critical bugs which rot until they are
>> closed in typical OpenSource manner.
> 1) There's no such thing as "typical OpenSource manner". Would you
> kindly stop generalizing?

Of course there is. One need only look as far as GitHub.

> 2) Qt is also a commercial product, with commercial support, and bugs
> fixed and prioritized (also) according to the commercial needs; so this
> statement is factually false.
No, it's not. It's factually correct. You just don't wish to believe it. 
That's a completely different story.
>> Qt is an incredibly heavy massive footprint. It gets heavier and more
>> massive every day. You won't be porting "just a GUI." CAN-BUS, Serial
>> I/O, SQL database, timers, yet another thread class, the absolutely
>> worthless QML (which pretty much means you will need to port JavaScript
>> as well.) Ah yes! In order to claim you have "ported Qt" you will also
>> need to port WebEngine and all of the other Web stuff.
> This is another blatant false statement, because you can port just the
> parts of Qt that you need, and even those can be further trimmed down
> using the feature system. (That's actually how you would do a port in
> the first place.)
>
> There are already many parts of Qt that run only on a subset of all the
> platforms Qt has been ported upon, and there is no such thing as a
> "minimum set of things to support to say that Qt runs on a given platform".
>
> My 2 c,

Here we walk smack dab into one of the many many many many reasons a SAD 
(or SAS if you prefer) is required for true software engineering. It is 
also one of the reasons Qt is starting to get such a bad reputation with 
developers.

A System Architecture Document specifies the minimum system requirements 
and minimal installation for a system or framework. This is one of the 
many reasons I believe there is no SAD for this product. I've certainly 
never found on. If you really honestly believe there is no definition of 
a minimum system allowed to call itself Qt that is like saying Microsoft 
can call Windows Linux if the port the ls command.

Picture yourself as a shiny new developer. You've just been hired to do 
development for the Wizzy-Puffle OS. Don't worry there is a port of Qt 
for this platform. You will use that to develop all of your 
applications. Having never heard of Qt, you quickly do a Web search and 
find the on-line documentation for the API. You see all of these 
wonderful API calls and read and read. You go into your first planning 
meeting with stars in your eyes. You must commit to developing a contact 
manager for the OS which uses a database and has a nice GUI. They would 
like it done in a week.

NO PROBLEM!

You commit to it.

No you go back and find that the only thing "ported" was QObject. This 
is the entire "port" of Qt.

How do you feel?

Every cross platform tool set I have encountered in my 30+ years in IT 
has made two horrific mistakes before disappearing from the marketplace.

1) Not specifying and enforcing a minimum set of features/functionality 
before it could be claimed the tool set existed on a platform.
2) Started adding things to a developers "favorite" platform then never 
porting them to other platforms.


The software battlefield is strewn with the corpses of products which 
made these two mistakes. The same mistakes you appear to be championing.

You want to know why Zinc went under/got eaten? They used Borland's C++ 
compiler which had tons of "extensions" for development and added new 
features to Windows first. By version 5 it had become almost exclusively 
a Windows development tool set with all other platforms treated like 
orphans. It was the best at the time so WindRiver bought it and threw 
management out on their back sides. Then the product focused exclusively 
(almost) on WindRiver RTOS.

Zinc let bugs rot forever too. Sales wanted newer and greater features 
for better platforms to sell more licenses and training, etc. ***There 
was no profit to be had in fixing bugs***. Most of those were left to 
the people who bought the product. We had to create a source patch, dial 
into the BBS (yes, I said dial in), log on, answer all of the required 
questions and upload the required files. At some point someone at the 
company "might" choose to roll it in. One thing was certain, you had to 
back your patch out before you could apply any patch files they sent 
you. Lots of commercial package vendors used the same (or very similar) 
patch tools back then.

Yeah, this letting bugs rot thing really honks me off. I have watched 
company after company do this with commercial product after commercial 
product. In the past couple of years I was at a client site which paid 
for commercial licenses and for the company to setup their Boot-2-Cute 
target. The developers encountered a bug. They contacted support.

"Yes, we know about that issue. It's been around for a few years now. 
All of our development team is focused on new stuff. If you want to pay 
us N-thousand dollars we will fix your bug. Otherwise you have to fix it 
yourself or hope a volunteer does."

I wasn't on the phone call. That is what both the owner and head of 
software development told me. N wasn't a single digit value either. 
After having spent all of that time and money they came ___this___ close 
to using a different framework and platform. They may have finally 
bailed now. I haven't been there for a while and haven't kept in touch. 
They were getting really tired of always being asked for money.

Were you paying attention when this list had a serious discussion about 
how impossible it is for someone from the outside to submit a fix? Yes, 
there was something in the digest about being able to post one's fix 
here, but, I have yet to see an announcement of a fix for a bug being 
posted in here and actually making it into a release. I don't read each 
and every post though, so, might have missed it.

You think the QObject example too extreme? How about no WebEngine or 
perhaps no database or insert-major-component-here.

As to "just the parts of Qt you need" I will let the P.S. from Uwe 
Rathmann answer that.

===

PS: would be nice to have a feature to get rid of all QML related members/
interfaces of QQuickItem/QQuickWindow

===

It's almost impossible to port "just the parts you need" in a post QML 
world. It's certainly not economically viable.


-- 
Roland Hughes, President
Logikal Solutions
(630) 205-1593

http://www.theminimumyouneedtoknow.com
http://www.infiniteexposure.net
http://www.johnsmith-book.com
http://www.logikalblog.com
http://www.interestingauthors.com/blog
http://lesedi.us




More information about the Interest mailing list