Google Summer of Code 2011 Proposal – Eventpress

Eventpress is a proposed event management system which can be unobtrusive and provide a simple event publishing means or be very detailed and create complex nested events which can interact with a community. It borrows inspiration from software such as Autodesk Maya, GIT and redmine. It will be a wordpress plugin, following the trend of bbPress and BuddyPress.

The problem I wish to solve is that of creating events which interact with a community. That community could be members of WordPress, bbPress (standalone or plugin), buddyPress or all of the above. By using a highly modular and object oriented structure, an event author can create very simple or very complex events with the same framework.

Maya Hypergraph

Maya's Hypergraph where you can see each node and how they're connected.

The modular framework is inspired by Autodesk Maya. Maya, at the lowest level is a database of nodes. The way information flows though these nodes determines all results in Maya. Similarly, the way information flows though event nodes and their attributes in Eventpress will determine all results in changes to attributes pertaining to a community. Each event node can have a theoretically infinite number of child and parent event nodes. The root node of this system would be the plugin itself.

The simplest event will require 3 attributes – a start time, an end time and a title. An event having a dynamic start and end time (the earliest and latest start time and end time of all it’s child event nodes) will also be an option. Creating an event with just these options allows an event to be visible in the front end but most events will want a few more attributes.

Additional optional attributes could include a permalink to a wordpress post about the event, a location, a list of attending community members and more. These additional modules were inspired by redmine – by only activating the modules needed for each project, there’s much less confusion about where information for simple events should go. There will be obvious attributes such as location and attendees, but also custom attributes that will operate much like custom fields within posts and pages for wordpress.

How this plugin differs from other event managing plugins is what happens when the event completes. Either when the event ends or when it is done collecting dependant information, the attributes of the event interact with members of bbPress, wordpress or buddyPress install (or a unified table with all members). Once all dependant fields are filled, the data is “committed” similar to a GIT “commit” command. After this commit, the changes to the community can be previewed. From this stage, the event administrator can still edit attributes and their values.

Git Up Commands

Git's commit and push commands

Once the results of the event are satisfactory, the “commit” can be “pushed”. Once pushed, the changes can seen on the live front end. These more complex events are ideal for tournament style events, rankings based on event outcomes, election polls and more. Implementing seemingly complex additions to this system like betting pools would only involve the addition of a few more attributes and the participation of the community.

Wish me luck – this is my first Google Summer of Code application and I couldn’t be happier that it’s going to WordPress. Cheers!

No comments yet.

Leave a Reply