[Box Backup] Box and non-C++ clients

Stefan Norlin boxbackup@fluffy.co.uk
Wed, 15 Feb 2006 22:05:14 +0100

> I have plans, but don't we all?  I'd be happy to collaborate with you on
> something.  I thought about creating a C library to wrap the functions
> needed to communicate with the server as a starting point, since then
> writing a python/perl/php/apache module to that single API should be
> straightforward, and we reduce redundancies.

All these different languages... :)

The "Ben-way" of doing it would probably be to create "makeprotocol.pl"
for different languages in order to be able to auto generate the client code
from protocol.txt. I am thinking about giving it a try with Java for a 
but since the protocol is relatively simple for the time being I am sure it 
be faster to create the classes "manually" in Eclipse. However, in the long
run generating the code is probably better.

My second step (after the protocol stuff) would maybe be to look at how
the functionality in bbstoreaccounts could be refactored into some more
common part in order to be accessible via the protocol. So that it would
be possible to admin users/limits/certs from a client.

Then a more complete functionality would be available from any (more or
less) auto-generated client.

After that it is time to start implementing the "real" application/user 

Also after using bbackupquery for restoring older versions of files than the
most recent one it is quite clear that a "dream API" towards the store would
include more complex functionality than is available in the protocol. 
using wildcards, listing all versions of a specific file and so on. Most of 
can be done by adding a "service layer" on top of the protocol and as the
protocol evolves rewrite the "lower part" of the service layer while trying 
keep the interfaces intact.

Well... eventually I will try to put all my thoughts in a more structured 
document... :)

I will also try "steal" one of our MVC programmers for some brainstorming in
order to try to come up with a more formal description / model for my client