2019-02-05

February update

This is just a quick update on the progress of the OctoMY™ project.

The work to implement the plan set forth at the anniversary is well underway!

Today I pushed maybe one of the most substantial commits made so far in the entire history of the project. Nothing has changed in the main branch of the code, but if you look under integration/v2 you will find a complete copy of the root.

Why did I do this instead of using a git branch? Because it allows me to directly compare the two and copy between them without having to check out a separate repository.

In the new "branch" the following has so far been done:

  • Number of compiler warnings has been greatly reduced. The entire build now generates just 76 warnings! The work to remove them will continue.
  • Libraries have been renamed, merged, split, and removed so that the whole namespace is much cleaner.
  • librest has been renamed to more appropriate libcombined.
  • Widgets and their respective .ui files have now been distributed out to the libraries where they belong.
  • Resource files have also been distributed out to the libraries where they belong. Some more tweaking of the build is needed for resources to be properly linked though.
  • Many folders including those of libraries have received their own README.md file that describe them better. There is still room for more.
  • Many files have had more information put into comments, especially for the build system!
  • Build system now looks for .ui and resource files like it does for sources.
  • Build system was modularized a little and cleaned up a bit.
  • A lot of sources have been brought up to spec with regard to coding style!
  • The build time has been cut in half (!!) mainly because of splitting Utility header into parts with the most used parts (OC_METHODGATE, OC_NEW and OC_CONTYPE) being put alone into dedicated headers (but many other small changes may have contributed).
  • The initial startup code of Node & al. has been massaged to work much better and tested with a Mock Node. The startup of Node is now well documented.
  • Lots of  objects are now passed around as QSharedPointers instead of raw pointers or raw references. Countless classese now have empty contstructor parameter lists and instead have a separate .configure() method to do the actual initializations which avoided the bad practice of running code from constructor initialization list (althought RIIA suffered a little, I think this was a worthwhile update).
  • A completely empty Agent and matching AgentWindow class has been created ready for constructing a new Agent from the ground up.
I was honestly worried that the goal I set for this project was too big. A huge thanks must go to Mrs. Y for her motivational support!

Now that we are here, the "real" work starts! I am really excited!

Update will follow as soon as there is anything to report...

2019-01-07

Happy Anniversary 2019

The 7th of January 2019 marks the three year anniversary of the OctoMY™ project. As promised, a roadmap for the project will follow. Great things are ahead!

A new version has been created in-tree simply called "v2". It started as an empty folder, and will be gradually filled with all the parts of the project code that works.

Each part will be scrutinized thoroughly and polished up to meet a high standard. The following rules apply:

  • No compiler warnings or errors allowed.
  • Some libraries renamed to better more descriptive names.
  • Some libraries merged.
  • Some libraries split up, especially libcore and libutil.
  • Some libraries or parts will be removed outright.
  • Widgets and ui files are distributed among the libraries they belong to.
  • Resource files are distributed among the libraries they belong to.
  • All libraries receive README.md to describe them better.
  • Formatting of sources modified to follow the standard.
  • Translation unit optimizations to reduce buildtime.
Once all the dependencies have been cleaned up the next phase begins;

  1. Empty dummy classes called NodeV2 and AgentV2 are created that will build and run but not actually work.
  2. The messy interfaces of node and agent are cleaned up and homogenized.
  3. Each feature is re-integrated one by one into the V2 classes ensuring that they work, creating unit and integration tests as the project progresses.
This will eventually leading to the completion of the MVP, our first minimum viable product.

Once this MVP works it will be tweaked, optimized and polished in stages until we have a realease candidate for testing.

This roadmap has the advantage that the progress can be measured and followed closely. Instead of crossing fingers and hoping, we can actually see what remains on a burn down sheet.

We are looking forward to work further on this, the work already started. Happy anniversary!