[Portland] The Plan

Lubos Lunak l.lunak at suse.cz
Wed Mar 1 02:15:21 EET 2006


 Hello,

 Ok, so much for silly mail subjects :). I guess now we need a plan to 
proceed, so I'll give it a try. I'll use separate mails for some of the 
topics that potentionally can lead to larger discussion, the simple rest 
here:

- There's repository, so that's where the development will take place, instead 
of putting tarballs somewhere. I'll put what I have there after I get the 
most recent code I have to a usable state again :), then we can 
extend/rewrite/whatever based on discussions here.

- License: as it's expected all kinds of apps will use it, including linking 
statically and whatever, everybody should use a very free license. I'll put 
all my code under the BSD one. Including daemons, those should be generally 
rather simple code too that we want everybody to use, there shouldn't be much 
to protect, and it should be simple to start another daemon.

- What to standardize: I think there should be all of these 3 standardized: 
The abstract API, the wire format, the C (or whatever) API. In this order, 
more or less, the abstract API being primary. That should make it simple to 
switch to another wire format later if needed or change the C API without 
affecting other parts. Standardizing the wire format should actually 
standardize something that's real and allow other bindings than just the 
basic C ones. And as presumably most apps would use the the C bindings those 
should be standardized too (the abstract API calls preferably described as 
"string is const char* for in arguments and char** for out arguments, use 
free() for the out argument afterwards").

- Ensuring backwards API compatibility: Every call will have its ID, most 
probably an int like it's now. Can be created as a part of the autogeneration 
of code from the abstract API description or can be specified in the abstract 
API description. There will be one call that'll return a list of all calls 
the daemon implements, this will make it possible to detect some 
functionality is missing and fall back (see later on fallbacks). Also, 
adding/extending/altering calls will be simply implemented by adding new 
calls with new IDs, in C API this will probably result in some of foo_2, 
foo_3 or whatever. See later (another mail) for backwards wire compatibility.

- How to design new APIs: There should be probably some "process" for this, so 
that we don't end up with some random mess that'll have to be patched 
repeatedly. I'm actually a bit lost here as I have no idea what ISVs would 
want/need. Ideas?

- Backwards compatibility in daemons: Daemons should preferably support 
everything including the oldest and crappiest. This hopefully shouldn't be 
that bad as it should generally mean just handling older calls with less 
arguments or whatever. Somewhen later it could be even possible to drop very 
old calls, with the help of the call providing a list of all functionality 
supported in the daemon and the fact that very old clients in such case would 
simply fall back then. If deemed worth it, that is. In the case of possibly 
changing the wire format (that includes switching to DBUS or whatever) 
completely somewhen, the daemon then should simply accept calls from both 
wire formats, process them the same way and send back the way they came.

- Wire backwards compatibility: Uhm ... I guess we'll need to get this one 
right quite soon. Some minimal possibilities for changes came from this 
initial testing period, from possibly changing wire format completely, and 
finally from the fact that even the wire format should allow some changes. 
The idea is roughly that one message will be something like { int id; int seq; 
int length; ... the rest depending on length ... }, so adding new calls with 
new id's could hopefully allow even larger changes.

 Ok, separate mails for the remaining issues so that it's easier to comment on 
those.

-- 
Lubos Lunak
KDE developer
---------------------------------------------------------------------
SuSE CR, s.r.o.  e-mail: l.lunak at suse.cz , l.lunak at kde.org
Drahobejlova 27  tel: +420 2 9654 2373
190 00 Praha 9   fax: +420 2 9654 2374
Czech Republic   http://www.suse.cz/



More information about the Portland mailing list