Proposal for WordPress Summer of Code

Requirements: Create a suite of plug-ins for event planning, tie it into WordPress MU/BuddyPress/bbPress, and create a community organizing platform for open source release. Using WordCamp.org as the test case, the resulting site would include functionality for registration, calendaring, additional roles/permissions, extended profiles, directories (vendors, participants, etc), discussion and messaging, coordination around things like carpooling and planning meetings, event media, etc. Source WordPress GSoC2009. This proposal generalizes it further.

Project Proposal

Social networks are a medium of easier communication, bounding and bringing people together. Any effort made to achieve this is highly appreciated by the community (of users). Event management is a recently discovered feature in social networks. Implementing this in WordPress will surly bring WordPress to a new height allowing users to create/share/participate/notify events. This feature has already been a part of LinkedIn and Facebook.

Following are few possibilities that can be included in WordPress MU/BuddyPress. Looking forward for feedback and prioritizing:

  1. Event Organizer: allowing users to create, edit, delete events. In addition, time zone coordination and showing time in user’s local time zone, geo-location, etc.
  2. Attendance: users can mark for their attendance. (e.g. interested, may attend, attending, not attending)
  3. Search for upcoming events. This can be extended as event directory allowing location specific search, tag cloud / browse by category.
  4. Roles: users can indicate their role for events. E.g. organizer, participant, volunteer, promoter/sponsor, etc;
  5. Revision History: this becomes important component when we want multiple users (in addition to event creator) to modify/propose event details.
  6. Discussion: each event will have a forum for users’ views. For simplicity this should be a flat blog-post comment like listing (or like Twitter’s update listing).
  7. Tagging: free tagging. Or categorization of event (e.g. educational, cultural, get-together/party, conference, show, outing, etc ;). Categorization sometimes known as controlled tagging.
  8. Group integration: if implemented in Buddypress, an event can be restricted to one (or possibly more) group.
  9. Blog-post integration: while writing a blog-post, users can indicate associate events. And now, these posts appear on event’s detail page as ‘blogs that talk about this event’.
  10. Notifications/Reminders: sending reminder emails to all interested. This includes users who have indicated as interested, attending, may attend.
  11. RDF support: This is an effort to produce semantic data 😉 as machine interpretable. Event details should be encoded as RDFa (RDF/XML) using http://www.w3.org/TR/rdfcal/ ontology.
  12. Admin page: settings like to enable/disable discussions, notifications, revisions, etc;

Schedule of Deliverables / Milestones

1st May to 31st May: Design and Basic framework:

Before any code deliverable, it is necessary that we lay down a good foundation.

  1. Brainstorming, discussion threads, design and then wireframes are required to set the project in motion and prevent unnecessary rewriting/modifications to the code. (as what I have observed on WordPress Dev Blog).

The first code-deliverable will consist of (in addition to the database backend) –

  1. Event creation and edit page. (assuming an event is public and available to all)
  2. Basic Upcoming events box (as widget/sidebar)
  3. Event details page
  4. (Optional) Event discussion: any user can post simple comments on the event page.
  5. Installer script – included with the plug-in itself.

1st June to 30th June: Advanced features

I’m not finalizing what features shall be there in next milestones. It’s a community project and community’s feedback and rating priority to each feature plays an important role for deciding deliverables. In my opinion the next milestone should have –

  1. Attendance (e.g. interested, may attend, attending, not attending)
  2. User roles ( e.g. organizer, participant, volunteer, promoter/sponsor, etc)
  3. Search and Tagging
  4. Revision History
  5. Blog post integration
  6. RDF/XML integration

This is merely my opinion. Community’s comments and suggestions are welcomed. We (with mentor) should plan for systematic pre-releases. This will helps us in getting early feedback from WordPress community for features and code-reviews.

I do not have any commitments during this period. I have 3 months of free time starting from 1st of May.

Open Source Development Experience

I have not been a part of any open source project officially. I am willing to be a part of WP community.

Work/Internship Experience

I have 3 years of work experience in Web development (ASP.Net, PHP, WordPress and Drupal). In addition, I do freelancing work time to time to fund my studies. This includes PHP scripts and Drupal development. I have experience with version control systems too.

Academic Experience

I am currently doing M.Tech (2nd year) from IIT Kanpur. I am studying Comp Sci. and Engineering. My Research Interests includes: Software Design & Architecture, Knowledge engineering, Social Networks.

Why WordPress

WordPress is a state of art for software for blogging. Other open source CMS offers just basic blogging features. I am associated with WordPress for the last 4 years and passionate about it. My WP blog is hosted at http://ankitjain.info/ankit running v2.6.

Summer of Code is an exciting opportunity for me. For my WP blog I have done basic customizations. This includes post specific advertisements, customizations of theme file, etc. This opportunity gives me an official chance to contribute to my favorite Web application. Such open source development experience and time to time guidance from mentor will surly help me to understand and boost passion, binding with community and coding standards.

Thanks,
– ankit

Tagged on: , ,

3 thoughts on “Proposal for WordPress Summer of Code

Leave a Reply

Your email address will not be published. Required fields are marked *