[WF-Infra] Project database

Bryce Harrington bryce at neptune.net
Tue Mar 20 23:37:28 PST 2001

On Wed, 21 Mar 2001, Hans [iso-8859-1] H=E4ggstr=F6m wrote:

> This is a description of a project database for the new website.  Comment=
> are welcome.
> Xerano expressed some interest in working on this.
> _Purpose of the project database_
> The project database holds information about different projects going on =
> WF.  A project can be a client, a server, a game, or something else.  The=
> main purpose of the project database is to connect all the other database=
> that store project related stuff.  This way it will be possible to ask fo=
> all the upcoming meetings for a project, or all the news items associated=
> with a project, and so on.

I've already mentioned to you privately how cool this sounds, but let me
reiterate:  Cool!  :-) =20

This doc describes something we've been needing for quite a while, and
I'll bet it's got usefulness well beyond just WorldForge.

> _Project database contents_
> * Project ID.
>     - Some unique number used as key.

Note that in WorldForge I've been trying to be careful what I call
'project'.  The naming scheme I'm trying to follow holds that WorldForge
is a 'project', and groups of people working on things like UClient,
XClient, Acorn, Mason, etc. are 'Efforts' or 'Endeavors'.=20
> * Project name
>     - Should be unique.  But has to be possible to change, so it shouldn'=
> be used as a key.
> * Short project description
>     -  A sentence, for usage in project listings, etc.
> * Long project description
>      - A paragraph (2 - 8 sentences or so).  Used for a page with more=20
> detailed project information.
>        Note that the projects have homepages too, so this need not be tha=
> long.  I'm not 100% sure if it is needed.
> * Coordinator(s)
>     - One or more people from the team database that work as coordinators=
> for this project
> * Irc channel(s) primarily used for this project
>     - One irc channel can be used by my many projects.  This field could =
> helpful for half-automated picking up of bookmarks.

You may want to have a separate 'IRC Channel' table, and then this field
could simply hold an ID for the channel.

> * Mailing list(s) primarily used for this project

> _Other databases that link to the project database_
> (I'm a bit rusty on relational databases, please forgive me for not using=
> the right terms and try to understand what I mean.)

> * Meetings and events database
>     - Each meeting/event can belong to one (or maybe more) project(s).

This will actually work in the reverse - the meetings and even db will
hold a field that is the 'Project ID'.  When you need a list of meetings
for a given project, you'll find the Project ID, and then do a filter on
that from the Meetings table. =20

> * Team database
>     - Each team member can belong to one or more projects.


> * News database
>      - Each news item can be related to one or more projects

Ditto.  You'll have one big table with all the news items, from which
you can filter according to project ID, date, submitter, or whatever.

> * Product database
>     - Each product can be worked on by one (or more???) project(s)

Again, this will work in the reverse - you'll have a Products table,
that has a field called Project ID, that points to the project that
'owns' it.

> _Different views to, and uses of, the project database_

> * Template project homepage.
>      - This would create a template into which the project homepage could=
> be included, or that could be modified to suit the purposes of the projec=

Interesting, but sounds a tad involved...  You may want to dig into the
details here a good chunk more.

> * Tool for creating a new project
>      - Web based forms to fill in, that creates a new project.  Also=20
> optionally fill in a news announcement to post to the news database, crea=
> a homepage for the project, etc.

Very good idea.  The easier we can make it for other game development
groups to join WorldForge, the better for both.

> _Implementation_
> The meeting, product, etc, databases aren't implemented yet, so the=20
> functionality that needs them can be left out for the time being.
> Kosh mentioned that postgres should be used as a database, because the re=
> of the WF site will use that.

Postgresql is a good db for this, but I bet it could be kept database
agnostic.  Of course, if you use Python you might not have that option
since it lacks a database-abstraction layer (AFAIK).  Obviously you'd
like to avoid making it Zope-dependent, since that would pretty much
seal its fate, regarding being of any use to anything but the new WF
website.  ;-)

Bryce Harrington     bryce @ neptune.net    bryceharrington @ yahoo.com

More information about the Infra mailing list