There has been some concerned raised and I want to discuss this on its own
thread so no one misses it.

In the upcoming weeks there is going to be a major change in the blackbox
internals.  Part of this is to remove the home brew linked list code and use
the STL.  Part of this is to allow for support of the NET WM spec (compliance
with KDE and eventually GNOME).  Part of the effort is simply refactoring which
happens to code every now and then as part of its life cycle.

This is one of those times in programming where everything stops because one
change breaks everything.  The classes in blackbox are tightly interwoven and a
seemingly small change causes havoc everywhere.  Also some of the actions the
net wm spec desires are not easily performed with the current code.  An example
of this is the _NET_CLIENT_LIST.  blackbox is expected to return a list of
every open window it manages.  The only way to implement this currently is to
loop over each workspace requesting its internal window list and make one long
list.  Then we convert this list to the format the message must be sent back
in.  Rather than write more list code I would like to use standard C++ style
container classes.  More C++ people understand them which will allow for more
people to hack on blackbox.

When we have changed how blackbox talks to external programs we must then
rewrite all of the bbtools to support this new mechanism instead of the
proprietary protocol we use now.  Rather than do this for every bbtool we have
decided to create a blackbox foundation class library which contains all of the
bits that makes a bbtool look and feel like a part of blackbox.  This way
people can write blackbox native apps faster as well as keep in sync with bug
fixes from the group.  Currently each tool has a copied fork of code from the
window manager and each one is at a different place in the tree.  Some of them
have bugs fixed a year ago while others have features not found in the others.
Yes, in a small way this duplicates the KDE/GNOME/XFCE/whatever group's work.
But that is our choice.  The other alternative is to force blackbox and friends
to depend on an external toolkit and all of the dependencies that brings with
it.  This new class lib will *NOT* be a replacement for a full featured system
like KDE.  It is meant for writing small apps like the pager or bbmail. 
Basically it will provide easy access to the net wm atoms and to the gradient
code which gives blackbox its unique look.  It will also provide the i18n class
for easy translation into other languages.

As you can see there is quite a bit to work on.  Let me assure you that once
things get into full swing patches and suggestions will be welcomed.  But the
initial work MUST follow the laid out plan and be executed by those who are
familiar with the code base as well as C++.  This is not the time for new
coders looking to learn their trade.  You can do that by helping flesh out the
foundation classes, report bugs, add features, etc. when the time is right.

To assist those eager to help, during this restructuring I intend to document
every class, method, and variable of importance in blackbox.  doxygen is a
quite nifty tool and blackbox will be structured to support auto documenting of
its internals with it.

Let me just finish by saying it is wonderful that people want to help. 
Normally I would welcome the help.  My Debian bugs often end with "Patches
welcome" and that has been my attitude on this list as well.  Once cvs has the
new code base in it feel free to start submitting ideas, patches, etc.

Thank you for the support.

Reply via email to