[ST] State of CONGO - what's going on?

Dave Belfer-Shevett dbs at homeport.org
Mon Jul 21 10:59:23 EDT 2008


This was posted to the 'congo-chat' group, thought Arisia folks might be keen 
on hearing what's going on with CONGO...

----------  Forwarded Message  ----------

Subject: [congo-chat] State of CONGO - what's going on?
Date: Monday 21 July 2008
From: Dave Belfer-Shevett <dbs at homeport.org>
To: congo-chat at yahoogroups.com

This is a sort of 'state of the code' update for the CONGO general community, 
letting people know what's going on with the system, and where things are 
going.

CONGO's baseline code has essentially been stable for the last year and a 
half.  There have been minor tweaks and updates, and at least one fairly 
major change (switching the print routine from a custom generated graphic to 
an 'on the fly' PDF, which helped in printing portability and code 
simplicity).

Two months ago I ran an event in Waltham that used CONGO for public 
registration and session signups using a customized public interface.  It 
worked, handling credit card payments, registrant signup, etc, but the amount 
of work required to get the pages and back end service stable was daunting.  
There are other events wanting this functionality, I was not excited about 
having to customize the code for each event.

CONGO v1.x is over 5 years old, and many of the assumptions and design 
decisions made for those first conventions have held strongly, while others 
have not worked out well.  Rather than try to 'fix' the existing code, which 
would have required a tremendous amount of refactoring (CONGO is about 20,000 
lines all told), a new approach was necessary.

I decided to start a rewrite.

Congo v2.0 is now a work in progress.  Those of you on the congo-dev mailing 
list have been seeing commits against the new branch in SVN for the last 2 
months.  While I'm trying to reuse as much code as possible, much of the 
original material is not portable, so I'm essentially using the screens and 
templates from Coconut, and rewriting the back end logic.

Architecture wise, here's what Congo v2.0 looks like:

o	100% Java (no PHP)
o	Struts v2.0 based
o	Page rendering using JSP + Struts + JSTL
o	Runs in a servlet container ala Tomcat
o	No standalone appserver
o	Uses SOAP/Webservices for remote API access
o	MySQL back end

Needless to say, this is a major overhaul of the system, but one that I feel 
is required. 

Project wise, I'm working this in a few phases...

1) Build up the basic toolset and framework for how pages and processing will 
work.  Understand struts, proper DAO methodology, and session management.
2) Convert Coconut page for page to Struts.  Don't add functionality, don't 
look for refactoring - just duplicate the existing application. 
3) Rework the database structures to be more normalized and, frankly, sane.   
In particularly, registrant contact details (address / phone / etc) get 
reworked, and history activity completely refactored.
4) Overhaul the transactions mechanism so financial transactions are tracked 
properly and audit trails can be easily looked up.
5) Recreate the 'public' interface so registrants can come in on the public 
pages, create logins, view their event details, and purchase registrations.  
Make sure back end processing is modular, so interfaces like Authorize.net, 
Paypal, etc can all be 'plugged in' as necessary, and configured via Coconut.

At this point, we should have completed the entire rewrite, including greatly 
enhancing internal structures and processes, and can focus on additional 
major features, such as...

6) Session management - and I don't mean HTTP sessions.  Event managers can 
create session schedules and timetables, and registrants can use the public 
interface to sign up for sessions, print out their schedules, and pay for 
workshops.  This was partially done for the Waltham event using Properties 
and custom written templates, and the users liked it a lot.  It needs to be a 
big part of CONGO.
7) With Session management comes other possibilities, such as published 
schedules and marquee displays showing the current event schedules and 
updated news, for display at-con.
8) Better at-desk registration payment processing, allowing workstations to 
run credit cards and paypal transactions at the operators station, rather 
than relying on wireless swipe machines.

---------------------------------------------
Where I am right now...

Currently I'm about halfway through step #2.  Logins, lookups, and edits on 
registrants are working, and I'm working on the event maintenance screens.  
It's a long process, but it's moving along at a reasonable pace.

Feel free to contact me on or off-list(s) (this is going to several lists) for 
any further questions, details or just general chitchat).  

I expect it'll be another few months until Congo v2 is ready for beta testing 
by existing users.  Those who are interested in the work in progress are 
welcome to sign onto the congo-dev mailing list 
(http://groups.yahoo.com/groups/congo-dev) and keep an eye on things, or if 
you're interested in participating in coding, and know Java (or don't mind 
learning it), sign onto congo-chat 
(http://groups.yahoo.com/groups/congo-chat) and let us know.

Thanks for everyone's support through this entire project.  I think the new 
codebase will allow for some stellar functionality in the system, and I'm 
looking forward to adding a lot to the system over the next several months.

	-dbs


-------------------------------------------------------


More information about the staff mailing list