Home | Get Involved | Sourceforge | Mailing Lists | Documentation

The Referendum Task List

To avoid duplication of effort, Please email the referendum-devel list if you start working on one of these items.

Current Showstoppers before 1.0 final can be releaseed

Memory leaks
update I checked into this the other day and even the most db-intensive page was growing no more than 1k per hit. I'm planning to set up hacktree.org before I worry too much more about this. [2000/05/19 :lh] On some pages The system grows by as much as 30k per hit. This is, of course, completely unacceptable in a high-availability web application, and is downright embarrassing besides. I won't release 1.0 until this has been fixed. The growth seems to increase with the number of database queries done by the system, but thus far I've been unable to locate a leak in Dustin Salling's excellent postgres package, PG. The other large bit of C code used by referendum is the Fast-CGI web architecture, via my own Small-FCGI bindings. Here too, I've been unable to locate leaks thus far. I plan to branch the source tree and shrink the system until I locate the source of the leaks. If anyone has any ideas on how to pursue this problem, please contact me, either through the referendum-devel mailing list at http://lists.sourceforge.net/mailman/listinfo/referendum-devel or directly at laheadle@cs.uchicago.edu
SSL support
I'm working on this now. mod_ssl is complaining about not being able to find openssl. whee. currently, passwords are sent in plain text both when logging in and joining the community. It should be a simple matter to use an SSL connection for these operations.
Publicly available installation
As is explained on the hosting page, Referendum needs to be installed somewhere on a permanent internet connection before it can be beta tested. I currently lack the resources to do this. Please consider hosting a referendum installation.
Beta Testing
Referendum needs to be tested before we can claim it is a stable system. For that we need a host and a community tree. Please see this document for my vision of how this can happen.

Other Tasks which would be useful

Change Vote (easy)
Currently there is no way for a user to change his vote. We do want this feature, right? [2000/04/22 :lh]
Vote Several Times (easy-medium)
When an issue is created, the creator should be able to set its type to one of single-vote or multi-vote
More convenience links (easy)
Add some more links that you think should go with each screen.
Rate Votes (medium)
All the community to decide which issues are important by rating them on a scale of 1 to 10. Add a page for viewing issues based on importance.
default reply title (easy)
When replying to a comment, the title should default to that of the replied-to comment.
Nice Hierarchical Group View (medium)
Currently there is no way to list all groups which shows them properly indented according to their parent-child structure. Right now we only have a flat listing. If you do this right, it shouldn't take too many database queries.
Security Testing (medium)
Find any security flaws in the Referendum code/architecture.
Change parentage
Change the parent(s) of a group.
Issue Expiration (medium)
I'm not sure if we want this, but perhaps voting for certain issues, or all issues, should be disallowed after a certain amount of time has passed.
Debian package (easy for the right person)
I would really like for referendum to be easy to install. The Debian package system would be a great way to handle dependencies, and could make installation a real snap for debian users, of which I am not one.
FreeBSD Port (easy for the right person)
another advanced dependency-tracking package system. It would be great if installing referendum on a bsd system were as simple as "cd /usr/ports/referendum; make install".
Test Suite (depends on completeness)
A test suite along the lines of the extreme programming methodology.
Nice Error Reporting (hard)
Hack the SmallEiffel compiler so that a rescue clause can retrieve (as a string) the stack dump output that currently gets printed to stdout when an exception occurs that is not handled. Log this error information in the database and/or return it to the browser.


Home | Get Involved | Sourceforge | Mailing Lists | Documentation