Attached is the log from the IRC meeting of this week. The main points
discussed were:

  * The new callback system
  * Plugin priorities
  * More aspects of how the new API will be used and its goals

Also, a few points I brought up that should be discussed in more detail
(only rsLeo was present at this time).

  * Python prototype
  * Dividing up my responsibilities

Please take a look at the log for more details and provide your
opinions here and hopefully more people will be able to attend the
meeting next week. If Wednesday nights aren't a good time, please let
me know when is the best time for everyone that wishes to participate.

Jon
  
-- 
________________________________________________________
Jon Keating                ICQ: 16325723
[EMAIL PROTECTED]               MSN: [EMAIL PROTECTED]
http://www.licq.org        GPG: 2290A71F
http://www.thejon.org      HOME: Minamiashigara, Japan
--- Log opened Wed Apr 12 21:01:39 2006
21:01 <@emostar> lets start the meeting now
21:02 < CapnKernel> Ok.
21:02 < CapnKernel> Want to say I found reading the log of last week's meeting 
very interesting and helpful.
21:02 <@emostar> continuing from last week, i have spent some time working on a 
design of the new API, but it isnt complete. I'd like to discuss that first
21:02 < CapnKernel> All ears.
21:03 <@emostar> The one thing that I'd like to modify about last week's idea, 
was that you can register many signals to one callback. I think it would be a 
better design to have eachs signal to a different callback. that will alleviate 
passing some information to the plugin, that the plugin then decodes to decide 
what signal it is getting.
21:04 < rsLeo> I'm back from lunch.
21:04 <@emostar> rsLeo: right on time just about ;)
21:07 <@emostar> hmm hard to tell if someone is typing or waiting for me....
21:08 < rsLeo> I think waiting.
21:08 <@emostar> well i will continue.
21:08 < CapnKernel> Yes we're listening.
21:09 <@emostar> The basic structure of callbacks that I was thinking, was 
having a template class that the plugin will create for each signal it wants to 
connect to
21:10 <@emostar> the way it works would be:
21:10 <@emostar> #1 Create a callback object passing the function to get called 
back
21:10 <@emostar> #2 Calling the daemon to add this callback to the queue for 
that specific signal
21:11 <@emostar> #3 The daemon calls the functions with the soon to be decided 
parameter
21:11 <@emostar> I think this idea provides some more flexibility because when 
the callback is assigned in the daemon, each callback can have a specific 
priority set.. that would be much better than setting a general priority rank 
for an entire plugin
21:13 <@emostar> As for the parameter, I see 2 choices:
21:13 <@emostar> #1 Pass a void * ... this is very Cish
21:13 <@emostar> #2 Pass a base class pointer that all parameters will be based 
on, this is more C++/OO and I prefer this better
21:14 <@emostar> Both the Plugin API and Protocol Plugin API will use these 
kind of system of callbacks
21:15 < CapnKernel> I'm afraid I have to go, the fan on my VGA card just 
stopped :-(
21:15 < rsLeo> lol
21:15 <@emostar> quick! switch your stdout to your printer
21:16 < rsLeo> You have a Plugin API and a Protocol API. If you have encryption 
where should that be implemented?
21:17 <@emostar> Plugin API
21:17 <@emostar> Protocol API is strictly for network protocols
21:17 -!- CapnKernel [EMAIL PROTECTED] has quit ["Leaving"]
21:17 <@emostar> The idea for an encryption plugin would be to have the highest 
priority for "send-message" and "recv-message" signals.
21:18 <@emostar> That way it would be the last to handle "send-message" and the 
first to handle "recv-message"
21:18 < rsLeo> ok
21:18 <@emostar> The new API would create a pipeline in the daemon that handles 
the chain of plugins processing them based on priorities.
21:18 <@Agrajag-> do the plugins define their priorities?
21:19 <@emostar> That is one of the weak points of the current API, it has no 
real way of modifying events. All plugins will get the same event at basically 
the same time
21:19 <@emostar> Yes, if they need to, they can specify a priority... otherwise 
the daemon will automatically assign it (based on order of loading).
21:20 <@emostar> Another idea is creating classifications of plugins that 
automatically have a set rule of priorities... but I don't think its too evil 
in letting the plugin developers assing their own for each signal. I think it 
gives more flexibility.
21:20 <@Agrajag-> perhaps there could be different points that the plugin could 
define itself to be called at
21:21 <@emostar> What exactly do you mean by different points?
21:21 <@emostar> Stages in the pipeline?
21:21 <@Agrajag-> yeah
21:21 <@Agrajag-> like a spell checker plugin would get called as the user is 
typing
21:21 <@emostar> Yeah, I was thinking of having an unsigned char.. so there are 
256 different priority levels...
21:21 <@Agrajag-> an encryption plugin would get called when the user clicks 
send and such
21:22 <@emostar> Ahh, those would be handled by signals
21:22 <@Agrajag-> the only problem with that is it might not be so flexible in 
the future if we don't think of all the different points
21:22 <@Agrajag-> hmm right ok
21:22 <@emostar> The idea is that the signals will be very generic. Plugins can 
create new signals...
21:23 <@emostar> The daemon will just be a dumb relay. Pushing signals to the 
connected listeners.
21:23 <@Agrajag-> ah yep ok
21:23 <@emostar> For example, the "shake-window" signal I talked about last week
21:24 <@emostar> Currently, the daemon does almost all of the work. The idea is 
to make the daemon as simple as possible and let the plugins do the work.
21:25 <@Agrajag-> yeah, that definitely sounds like the right approach
21:25 <@emostar> The main responsibilities of the daemon would be to manage 
plugins, push signals around, user management, config file management...
21:26 <@emostar> Can you think of anything else?
21:28 < rsLeo> You said modifying of events is not possible? In which case 
would this modifiying be usefull?
21:28 <@Agrajag-> hmm not really. if the functionality is all divided up into 
smaller plugins i think that would be the easiest to manage
21:28 <@emostar> rsLeo: Encryption plugins have to modify the contents of the 
message to decode/encode.
21:29 <@emostar> Spellcheckers have to modify the text (if thats what they are 
designed to) or show the errors
21:30 <@emostar> Agrajag-: well the functionality would still be in the daemon. 
Just all protocols will be plugins (get icq out of the daemon, which it is 
dangerously tied to closely with).
21:32 <@Agrajag-> ok, sounds good, im just not sure how the priorities would 
work
21:32 < rsLeo> Aren't the priorities of the plugins in this case useful?
21:33 <@emostar> if we have 2 plugins watching the "send-message" signal, the 
higher priority will be called first
21:33 <@emostar> for example, a spell checker that modifies text automatically 
when a message is sent and an encryption plugin
21:33 <@Agrajag-> for example, you said the encryption plugin would take the 
highest priority. what if, for whatever reason, another plugin comes along that 
needs to do stuff after encryption?
21:33 <@emostar> the spell checker must run before the encryption routine
21:34 <@emostar> well, as i was thinking, there would be 256 levels. the 
encryption is "high" so it should be around 200
21:34 <@emostar> if something is higher, it can be at 201
21:35 <@emostar> this allows other plugin developers to find an open spot to 
put their plugin in so it gets run at the right time (if it is necessary)
21:35 < rsLeo> good idea
21:35 <@Agrajag-> but then if there's a plugin at 200 and at 201, and i want 
one inbetween, i have to get the developer of one of them to change
21:36 <@Agrajag-> (im not trying to say this isn't a good idea, im just trying 
to make sure there won't be problems)
21:36 < rsLeo> thats a general problem we will have if we use numbers for 
priorities. 
21:37 <@Agrajag-> .. and i don't have a better idea :)
21:37 <@emostar> yeah.. i was worried about that.. but the actual chances of it 
happening are low. but they do exist, so tahts why i also though of having 
priority classifications. and then a lower classification within that
21:37 <@emostar> s/though/thought
21:37 <@emostar> my typing is attrocious.. as is my spelling :p
21:38 <@emostar> but i really do think the simple 256 levels would be 
sufficient.. if a developer has to modify a code.. then it shouldnt be that bad
21:38 < rsLeo> yes I agree
21:38 <@emostar> if the priorities are taken at a reasonable rate.. then the 
developers should intentionally leave some open spaces
21:39 <@emostar> i really dont think we will have 256 plugins loaded at once...
21:39 <@emostar> protocol plugins wont have priorities, naturally...
21:39 <@Agrajag-> i think it would be useful if the plugins could provide more 
information about what they need to do and when, so the daemon would be smarter 
about calling plugins
21:40 <@Agrajag-> the other problem with priorities is that you'd need to know 
about other plugins priorities so that you can insert yours in the right place
21:40 <@emostar> the main problem with that... is the daemon has to be aware of 
the diffrent types of plugins and how their priorites rank.
21:40 <@emostar> then if there is a new "type" of plugin... the daemon wont 
know about it
21:41 <@emostar> yeah, there will have to a list that is maintained
21:41 <@emostar> i have seen other systems use this kind of master list 
(actually, i think it was a microsoft api...)
21:42 <@emostar> having a system that doesnt have this kind of issue is ideal.. 
but im not sure how to make such a system.
21:42 <@Agrajag-> ok. i gotta go (at gf's place and dad needs to use computer, 
heh). i'll think more about this and get back to the mailing list
21:42 <@emostar> with the one im proposing, it should at least be managable 
without much difficulty.
21:42 <@Agrajag-> cya
21:42 <@emostar> alright, good night!
21:43 <@emostar> looks like the meeting is coming to a quick end.....
21:43 < rsLeo> good night
21:43 < rsLeo> yes
21:43 <@emostar> half the members are gone :o
21:43 <@emostar> so, do you have any questions or ideas, rsLeo?
21:43 < rsLeo> I think priorities has disadvantages but at the moment there's 
no better way.
21:44 <@emostar> yeah..
21:45 <@emostar> its definitely doable though
21:45 < rsLeo> Making plugins modifying events could be done if the plugins 
return events too.
21:46 <@emostar> yes, when the callback is done it will return the event to the 
daemon.. which means that it may be modified
21:46 <@emostar> then the daemon takes the modified event and goes to the next 
plugin
21:47 < rsLeo> all right
21:47 <@emostar> on another subject...
21:48 <@emostar> the time required for this project will depend on how many 
people we have working on it
21:48 <@emostar> i was thinking of some ways to help work as a group, and 
thought maybe having a prototype in python or something might help things go 
faster in the longrun.. but then i thought maybe it would be a waste of time on 
the otherhand..
21:50 < rsLeo> if there are people willing to help they need some help i think
21:51 <@emostar> yes.. basically a python prototype would be a form of psuedo 
code that actually works so you can play with the system and (ideally) identify 
weak spots or things that wont work out as expected.
21:51 <@emostar> if we identify the problems before the new api is halfway done 
it can save some time
21:52 < rsLeo> yes. the question is how complete should the prototyp be?
21:53 < rsLeo> It should be enough to implement the important interfaces and 
objects.
21:54 <@emostar> yeah.. i was thinking of not that complete (might be 
better...) but just basically pseudocod ethat can be divided and assigned parts 
to developers with a clear framework..
21:54 < rsLeo> With the prototyp the plugin developers can change there code 
too without looking at the real code.
21:55 < rsLeo> That's a very good idea.
21:55 <@emostar> so that means we will have to decide the api function names, 
objects, and the objects public api
21:55 <@emostar> that would be towards the end of the prototype stage that it 
will be all done
21:56 <@emostar> but yeah, gives the developers a bit of a head start
21:57 < rsLeo> ok, next meeting in one week?
21:58 <@emostar> yeah, id just like to say one more thing that id like to have 
discussed next week
21:59 <@emostar> dividing some of my responsibilites up to other people... 
right now im still doing nearly 100% of all work (minus patches, but i review 
patches and modify them)
22:00 <@emostar> we dont have to discuss it now.. but when there are more 
people (next week?)
22:01 < rsLeo> ok. cu next week
22:02 <@emostar> alright, good night!
--- Log closed Wed Apr 12 22:02:42 2006

Attachment: pgpRUOP9qOAAz.pgp
Description: PGP signature

Reply via email to