Developer's Guide to the Code

From GCD
Revision as of 06:04, 21 November 2010 by Handrews (talk | contribs) (→‎Overview)
Jump to navigation Jump to search

Overview

This page serves as an introduction to and tour of the GCD code base. It attempts to stay high-level in an effort to avoid becoming out of date immediately as details change. The GCD is implemented as a Django-based web application, using MySQL as a database. Solr is under investigation for search, and at some point we will be using one of the major JavaScript libraries. The general layout is based on what seemed to be Django best practices circa late 2007. Some things might not make much sense, and we'd generally like to fix those, but we have very limited resources and the nature of the server crisis that led to the current code's deployment caused us to accept some choices we might not have otherwise made.

The top level of the SVN tree reflects this:

branches
Various release and development branches of the pydjango tree. One of these is usually deployed on production. The branching strategy is not overly coherent, although Ralf has a proposal for handling future branches that should make more sense. There are also some branches for exploring new UI designs and search tools. Inquire on the mailing list for the current status of those trees.
bugzilla-patch
The GCD uses two different modified versions of Bugzilla 3.0.3- one for tracking data errors and one for technical bugs. This directory holds the patches used to create those versions from a base 3.0.3 installation.
database
MySQL migration scripts, schema definitions and scripts involving dumping data in various formats. The scripts for each release are in a sub-directory numbered and named after that release. The scripts in the 0.4_littlenemo directory are a bit more complicated. The "0" scripts (0, 0a, 0b) are for migrating the 0.3 release to the "pre-nemo" branch which was in production leading up to the release of 0.4. The scripts numbered 1 and higher are for migrating pre-nemo to the full 0.4 little nemo schema.
gcd
This was a re-start of the project, intended to supersede the prototype that was developed in the pydjango tree. It has what Henry considers to be a better Python package layout. But then the server went down and the previous admin felt it was better to end support for that system, and we had to resurrect the prototype. This has useful stuff about the eventual schema direction but is otherwise a dead end.
pydjango
The "trunk" version of the currently deployed site. Usually deployed on beta, if it's deployed at all. The pydjango project was originally a proof-of-concept intended to show that a system written in Python using the Django framework was the right way to go (as opposed to a content management system such as Drupal, or a Microsoft-based solution such as ASP.NET). Of course, there was a crisis and the prototype ended up in production. It did get almost entirely rewritten between the initial proof of concept and the production version, but there's still more legacy weirdness than Henry would like to have in a "new" project.

Python Packages

Django Templates

CSS Files

Images