[kforge-dev] Hi all. Where to start?

John Bywater john.bywater at appropriatesoftwarefoundation.org
Tue Oct 18 09:42:26 UTC 2005

Hi Miles,

Thanks for posting to the list. Great to hear you installed kforge.

I'll try to answer your questions....

Miles Wu wrote:

>Hi all,
>I'm Miles Wu and I wish to help the developement of kforge. I have had
>some experience with python, but  I am sure I can pick it up as I go
>along. At the moment I have managed to get kforge installed on my
>machine (gentoo linux), but unfortunately I don't really know how any
>of kforge works!
The architecture follows Martin Fowler's Patterns of Enterprise 
Application Architecture.

We're just following such patterns as ActiveRecord, DataMapper, Domain 
Model, MVC, etc. to create a layered architecture.

At the moment, there are 4 layers:

Presentation Layer (kforge.django: currently a Django application)
Command/service Layer (kforge.command: follows Command pattern, and 
Service Layer pattern)
Domain model Layer (kforge.dom: follows Domain Model)
Persistence Layer (kforge.db: follows DataMapper and ActiveRecord)

But the persistence layer is almost entirely driven by the domain model.

>>From what I have heard from Rufus, the plugins are based on event
>notification (so they are told about events, and act upon them) and
>kforge is very modular.

Yes, events are generated by object in the Domain Model, which plugins 
can listen to. Fowler describes a plugin pattern.

> However, I do not know how the frontend
>relates to the backend (django -> kforge), and how the DB/DOM works (I
>hope it is as easy as ActiveRecord).

Is this the RoR ActiveRecord? You'll have to tell us what you like about 
it so much ;-)

>I have already spoken to Rufus, and we both agree that the best way
>for me to become acquainted with the code would be for me to try and
>implement a plugin of some sort. At the moment he is suggesting some
>sort of statistics plugin (which is notified of the events it should
>be tracking and would store this in the DB).

Sounds like a good idea. We must all think about what we want to count 
as 'activity' for the site statistics.

Perhaps we could all discuss what to count as activity?

>If any of you have any suggestions of other things please do reply.
>Also any tips or any information useful to me in implenting the plugin
>would be greatly appreciated.

There are a few plugins that have been started. The trac plugin 
(kforge.plugin.trac) is the most complex, as it is currently the only 
plugin that depends on another plugin (svn), and also the only plugin 
with its own domain objects (extending the domain model).

The stats plugin will need to define the domain objects that track 
activity. But all the DB stuff will happen automatically, from the 
definitions of the stats domain objects.

Look at the trac plugin, but please remember that the way plugins work 
is likely to change.

If there is anything you'd like clarification on, please just ask.

Again, thanks for your message.

Best wishes,



More information about the kforge-dev mailing list