Sustainability of the technology
Web applicaons
With the rapid development of web applicaons
in recent years, new client-side and server-side
frameworks are constantly emerging. Major new
versions of frameworks are released in short cycles
and adopt new paerns in web engineering. This might
discard backwards compability and support for older
versions, increasing maintenance costs. Projects with
a longer lifespan may use outdated frameworks and
libraries unl it becomes cheaper to write everything
from scratch using completely new technology and
architecture.
Moreover, the JavaScript language itself has undergone
revision in recent years. It now incorporates features
like scoped variables, classes, and modules (in
ECMAScript 6), leaving web developers to deal with
lack of support for all the features of the language in
major browsers. Supersets of ES6 like TypeScript are
acvely used as well, and are not directly supported by
browsers, forcing web engineers to use transpilaon to
the most portable old version of JavaScript. Luckily, the
new versions of the language are supersets of the older
versions and maintain backwards compability.
Apart from using exisng frameworks, there’s always
a temptaon to make your own in-house soluon to
exactly fulll the requirements of the project. This
might be considered feasible as long as the developers
working on it don’t leave the project, otherwise it
would be yet another framework to learn with most
probably non-existent or minimal documentaon and
no internet resources – creang the need to rewrite
the applicaon using exisng frameworks or invenng a
new one.
The nature of web engineering forces developers to
use a complex mul-step build process to produce a
working applicaon. Not only do frameworks change,
but the build tools change rapidly as well – like Grunt,
Gulp, webpack, etc.
Another queson to consider is the browser on the
client side. With mulple rendering engines on the
market, the applicaon has to be tested for all of them
and on all plaorms. With extremely short release
cycles of browsers (like Firefox) and seamless updates
(like Chrome or Edge), it’s virtually impossible to
keep up. Targeng older browser versions also brings
problems: they don’t support newer CSS/JavaScript
features and might behave dierently when rendering.
A supported version bump in the future doesn’t help
if some users keep the older version of their browsers
and are therefore unable to use the applicaon
anymore.
The ne granularity of popular frameworks forces
developers to use several frameworks in one project
to achieve their goal. Each framework or library has its
own style, integraon level, documentaon, release
cycle, and level of support.
Though the web applicaon stack will somehow
stabilize in the next few years, it’s important to make
good decisions on what technologies to use, so that
the project won’t have to be rewrien from scratch
mulple mes.
Sustainability of C++/Qt/QML
C++ is a mature language that has proven to be
conservave and slow changing. The adopon of the
major C++11 standard in projects followed by its C++14
extension is fairly slow because of a lack of support by
major compilers. The 4th edion of Stroustrup’s The
C++ Programming Language including C++11 features
was published in 2013, two years aer the standard
was raed. All the C++ standards up to and including
C++17 are backwards compable with the older
version.
The Qt framework has been on the market since 1995,
with major versions released in 1999 (Qt 2, lifespan of
2 years), 2001 (Qt 3, lifespan of 4 years), 2005 (Qt 4,
lifespan of 7 years) and 2012 (Qt 5, lifespan of at least
5 years). Source compability was largely maintained
during the transion from Qt 4 to 5, whereas previous
transions broke the compilaon process. That is, the
transion should have been made either completely or
not at all. Qt 4 introduced Qt3-support classes for a
smoother transion to the newer version of the library.
Paradigms and approaches used in Qt have remained
mostly the same throughout recent major releases.
That means having learned Qt once, one is able to
develop Qt applicaons for at least the current and
next major release. With a median cycle of major
releases every 4 years, this typically means sustainable
project development for at least 8 years.
As for now, Qt 5.x is developed in a 6-month cycle with
API and ABI compability.
Sequality, 05/20178