Recently a big event happend - Nokia and Microsoft decided to make Windows a major platform (instead of MeeGo) for all future mobile phones of Nokia. There was a lot of discussions about future of Qt regarding this event. And one discussion is more important than everything else - I mean this blogpost "http://labs.qt.nokia.com/2011/02/18/buckets-of-cold-water". First of all, I would like to say thanks to Vohi for his honesty and second it become clear that Nokia doesn't interested in further development of Qt on desktops. It's sad, but I can understand this - Nokia is not software developer. Despite this fact they promised to continue working on Qt and it's components which make sens for mobile platform. This sounds good... but it's only sounds. I hope this will be reflected in actions.
But as a software developer for desktops who uses Qt in every day work (starting from small text search tools up to large systems consists of many NT services which must work years without stop) I got a cause, which was decisive in making the decision to start a fork.
So, I decided to start a fork of Qt framework in which i want to improve Qt by
- modularisation: QtCore have a lot of excelent things which may be usefull without "Signals/Slots" framework and without "QApplication" and many other things in QtCore, for example QString, QByteArray, QTextCodec, QDateTime, QLocale, QAtomicInt etc.
- using 3rd party libraries such as Stlsoft, Boost, Loki etc which should reduce complexity of Qt internal parts.
- using common tunable memory manager, for example Loki has a good one.
- using common build manager - cmake.
So here is a draft version of roadmap for "my fork of Qt":http://gitorious.org/qtfree
- switch to cmake
- make a module with all common Qt types (QString, QByteArray, QTextCodec etc). Actualy, this is already done and you can see the result "here":http://sourceforge.net/projects/qttypes Here is a cmake project based on Qt 4.7.1 (with very small fixes) which collects QtCore sources in one module. After building this project you will get a small (~200Kb) library (instead of QtCore ~4.5Mb) with all common types used in Qt. P.S.: I spent only one day to create this project (only to check my approach), so don't judge me severely.
- make a module to work with streams (QTextStream, qDebug etc).
- make a module to work with file system (QFile, QDir etc).
- make a module to work with "Signals/Slots" framework (QObject).
- make a module to work with threads (QThread).
- make a module to work with shared objects (QSharedMemory).
Any ideas or suggestions are welcome.