Wednesday, 29 January 2014

Kadu 1.0-alpha3

Yesterday (28.01.2014) I was finally able to release 3rd alpha of Kadu 1.0. This took really long time for an alpha. A lot of code was commited (more than 300 individual commits), and even some unit tests were added!

There are several reasons that make this release a very good one in my opinion. It moves Kadu forward much more that alpha should:

  1. C++11 is used more and more, std::unique_ptr and move semantics are my best friends now - passing ownership of pointers is now easy and does not require special comments or documentation.
  2. Value semantics is used where it makes sense (less pointer passing, more immutability).
  3. In some places pointers were replaces with references, that removes burden of checking them for nullness.
  4. Preparation for Qt5 migration by Beevvy were merged, so hopefully full transition in 1.1 will be less painful.
  5. OSGi-like services are used more and more (see plugin subdirectory).
  6. Real and useful unit tests were added for new plugins code - not as much as I would like, but this is still a big progress form what we had before.
  7. Automoc is used more, so changing build files is easier.
  8. scan-build was executed and showed almost no bugs in Kadu core and plugins (most of them is fixed now)
But there are some things that I'm worried about:
  1. With service based code Core class becomes more and more messy, need for dependency injection library raises with every new service added (I plan to work on this just after Qt5 port).
  2. main.cpp code is still not cleaned up.
  3. Services does not seem to be split properly, some unneeded dependencies and extensive responsibilities can be seen in some places. On the other side, there are now many services for just plugin handling. I'm thinking that maybe a wrapper service is needed to present a one-point entry API for outside code?
  4. I noticed that with unit-tests around I tend to take less care of my code with a thought that 'every bug will be found by tests' - this is very bad and I need to fight with this new habit and go back to executing methods line-by-line in my head.
  5. I'm not sure if unit tests are very good (they have found some bugs), but I hope that will growing experience they will also became better.
Anyway, Kadu is in general getting better and better and still have a great future.

No comments:

Post a Comment