[FreeNX-kNX] nxcl 2.x branch

George Wright gwright at kde.org
Mon May 19 22:54:12 UTC 2008


Hi all,

As my exams are nearly here and over, I'm starting to think about a major 
revision to the nxcl backend client library that's part of freenx-client.

Basically, the intention of nxcl 1.x (which is the current branch, except that 
the version number is 0.9 at the moment...) was to get something working 
first, and elegantly second. This is the branch which works for the time 
being, and even though the API is horrendous, the API is frozen and should be 
used for any major clients for the time being (krdc, qtnx...)

However, for a long time I've been particularly unsatisfied with the API and 
general implementation for nxcl. It was hacked together very quickly in my 
and Seb James' spare time, so it's not particularly elegant (or stable).

So I'm proposing that development starts on a 2.x branch of nxcl whose primary 
goal is to clean up the codebase and give the code a long needed overhaul, 
along with making sure everything is done in a cross platform manner right 
from the start.

This is /not/ a rewrite. It's simply a complete restructuring of the code and 
rewrite of the API. Dead code will be removed liberally and hopefully we'll 
see a significant increase in the stability of the code as it'll actually be 
fairly readable.

Now for the suggestions:

- Get rid of the configuration and session parameter structs. These are ugly 
and don't have any place in this codebase. Replace them with configuration 
classes with a well-defined API and configuration dictionaries.

- Overhaul the API so that redundant functions are thrown out, and consistent 
naming is used.

- Improve the cross-platform capability of the client library as a whole. 
Possibly through use of abstract base classes which are then implemented on 
whatever system is being used.

- Remove the Cygwin dependency on Win32; this is the source of 99% of the 
problems with nxcl on Windows.

- Clean up the notQt classes and rename them to be more in keeping with the 
naming convention of the rest of the API. Possibly spawn these off into a 
separate library.

- Clean up the callback system and define it well. Ensure callback information 
is sent throughout the code.

- Get rid of the switch statement in nxsession.cpp which handles the 
connection process. There must be a better way of doing this.

- Possibly remove the use of NXWin on Windows and replace with something like 
Xming, to get rid of the Cygwin dependency.

- Remove dependency on nxssh and replace with openssh. Investigate solution 
for Windows.

That's all I can think of for now. Does anyone have any suggestions/wishes 
that they'd like to see appear in nxcl?

When I've got a bit more time I'll start draughting up a proposed API and send 
it to this list as an RFC. If anyone has any suggestions for the API please 
get in touch with me.

Regards,

George

-- 
George Wright, http://www.gwright.org.uk
KDE Developer - http://www.kde.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/freenx-knx/attachments/20080519/488c1900/attachment.sig>


More information about the FreeNX-kNX mailing list