[geeklog-devel] Quick overview of GL2 and what we have so far and how it relates to the API

Blaine Lang geeklog at langfamily.ca
Fri Oct 31 16:34:25 EST 2003


Vincent,

I've just been reading up on the PostNuke API as I have a module that I need
to develop for a client. This is not Nuke but a totally separate development
effort (for those that are not aware). A lot of what you raise was raising
the same ideas for me as I was reading their module developer and API
documents.

http://noc.postnuke.com/docman/view.php/5/10/pnAPI.htm

Their API is still in development but already has some of the ideas you
presented.
There are a lot of other API's here that we use COM functions or Globals
for. In GL2, we will not be relying on globals so there will be a need for
some of these API or functions to be exposed.

I expect GL2 will be if not 100% OO - very close and I believe PostNuke (
next step for me is to look at their code) is all OO. So this API reference
may be helpfull.
http://noc.postnuke.com/docman/view.php/5/10/pnAPI.html#id2758765

Blaine

----- Original Message -----
From: "Vincent Furia" <vmf at abtech.org>
To: <geeklog-devel at lists.geeklog.net>
Sent: Friday, October 31, 2003 2:43 PM
Subject: Re: [geeklog-devel] Quick overview of GL2 and what we have so far
and how it relates to the API



> A couple comments I wanted to add about plugins and other GL2 stuff.

> First, I think that we should consider making some of the 'core'

> functionality into plugins instead. Specifically I'm referring to the

> comment engine, the (potential) ratings engine, and the messaging system

> (maybe even the logging system?). This would allow users to replace the

> functionality provided by these plugins. A good example of this might

> be replacing a standard comment system with a forum-like comment

> system. I think doing so would give GL2 even more flexibility.

>

> I know Tony didn't mean the core feautre list to be exhaustive, but one

> item I didn't see (but would like to see) was a configuration utility.

> I think, with GL2, we should get away from forcing GL administrators

> from editing config.php by hand and move to a fully web based

> configuration utility that can be used by the plugins as well being used

> for core feautres.

>

> On that subject I think it's time to start putting together a document

> that shows what core functionality GL2 will provide and any information

> we have on how it will provide that. Something like a design document.

> It's something that I'd be willing to work on, but I'd need a lot of

> information and support, especially from Tony. Maybe this is something

> that would best be done in a Wiki format?

>

> Finally, I have a few comments about event handling system and a few

> comments on plugins in general. If we do this well, and efficiently, we

> could have a really flexible, extensible system that will beat out every

> other open source system I've seen. For that reason I think its

> important to focus, briefly on how the plugin event calls might work in

> GL2. This is just a rough idea, and I'd really like to see input on

> what you all think of this.

>

> Each plugin should be able to register the fact it wants to be called

> when certain events occur:

> registerEventCallback(plugin registering callback, plugin raising

> event, event)

>

> Then, a plugin can notify GL2 that event has occurred with:

> raiseEvent(plugin raising event, event, parameters) // parameters:

> array of values

>

> Upon being notified that an event occurred, GL2 can call the plugin API

> for all plugins registered to recieve the event:

> onEvent(plugin raising event, event, parameters)

>

> Also plugins need to be able to invoke an event/function in another

plugin:

> invokeEvent(plugin providing function, event, parameters)

>

> I'm still thinking about possible ways raiseEvent and invokeEvent can

> handle returned values. One possibility, at least for invokeEvent, is

> the functions could be required to return a small object containing

> status (-1, failure; 0, plugin function not found; 1, success; etc.) and

> the results of the call:

> $P = invokeEvent(plugin, event, parameters);

> if ($P->status > 0) {

> echo $P->result;

> }

>

> Of course all this leads to a question if we should have a severely

> simplified API where even core functionality such as the moderation

> fuctions, comment functions, etc should all be called through this event

> API (with a plugin name = 'core'). One advantage to doing it this way

> would allow us to extend plugin functionality in later releases without

> affecting the plugin API (which would prevent plugin obsolesence to an

> extent).

>

> Another issue I think we should start talking about is plugin

> dependency, and how to handle it gracefully. Obviously plugins will

> support, to one extent or another, the use of other plugins. This could

> run the gambit from a plugin being dependent on another plugin to work,

> to a plugin using another plugin in a non dependent way (i.e. the plugin

> isn't required for operation, just for extended functionality).

>

> I think that is more than enough to digest in one sitting. If anyone

> would like to chat with me I'll try to be available in #geeklog. Of

> couse, email discourse is always welcome as well.

>

> -Vinny

> Who is already having fun...

>

> _______________________________________________

> geeklog-devel mailing list

> geeklog-devel at lists.geeklog.net

> http://lists.geeklog.net/listinfo/geeklog-devel





More information about the geeklog-devel mailing list