GSOC 2012/Student Application spmohanty

Email Address: spmohanty91@gmail.com Telephone: +918142092636 Blog URL: http://web.iiit.ac.in/~sharada.mohanty/blog Freenode IRC Nick: _spM_

Please answer following questions.

Why do you want to work with the Fedora Project?
I have been a Fedora User for 3 years now, maybe its time for me to give back to the Fedora community for all the awesome things it helped me out with. Apart from that, Fedora is a very Big name in the Open Source Community, and being associated with it and contributing to it in the slightest sense would only make me proud.

Do you have any past involvement with the Fedora project or with any another open source project as a contributor (if possible please add some references as well)?
I have provided solutions to a few issues on drupal.org, even provided a patch to one issue on Drupal.org. My Drupal.org profile : http://drupal.org/user/1461490

Did you participate with the past GSoC programs, if so which years, which organizations?
No this is the first time, I have been applying for GSOC

Will you continue contributing/ supporting the Fedora project after the GSoC 2012 program, if yes, which team(s)/area(s), you are interested with?
Yes, I will love to be associated with Fedora even after GSoC 2012 and continue contributing to the project in all the ways I can.

Why should we choose you over the other applicants?
I have prior experience in development in Drupal, and on development as a whole. I love learning new technologies, building cool things, and then in the end sit down and enjoy result. I am also a Student Systems Administrator in my College, giving me experience working on numerous Web Portals, Web Servers, Proxy Servers,etc, and also exposing me to numberous Web Technologies. That makes me comfertable with quite some of the popular Web Technologies.

Proposal Description
Please describe your proposal in detail. Include:

* An overview of your proposal I propose building an Event Management System to Track various events happening, on a Calender like Interface, With Easy creation, updation and Deletion of Content. * The need you believe it fulfills This would allow for smooth functioning of the setting up and organisation of Events. And Events meaning any activity which has to happen at a particular time, with some information attached to it. Ex. Beta Release of an Application, IRC Meeting, FUDcon, etc * Any relevant experience you have Heres a link to the major projects I have completed : http://web.iiit.ac.in/~sharada.mohanty/projects * How do you intend to implement your proposal

For this project the Calender Module is a really comprehensive starting point. A new content type for Event could be set up, and the "create content" persmissions be given to the "CLA signed" role. The new content type will have all the numerous Fields that we settle for(Title, Description, Date, Time, Locattion), and also have another user (linked through the User Reference Module) "responsible" for that event. The "responsible" user would have the permissions to classify an Event as "not yet in progress", "in progress", "completed", or "not going to be done", as Kevin Suggested.

The event can be categorised based on a taxonomy setup on drupal, as say a Fedora Team Meeting or Fedora Release Schedule, etc which can be themed in the end to let the user know the category of the event in the Calender from the look of the event on the calender.

Regarding the creation of the Event, any one with required permissions can either create an event from an admin menu, or we can provide for a graphical "+" symbol on all the dates which appear on hover, to add the Event on that particular date. This would take manipulation and theming of the Calender module.

After the events are populated,the Views filters like team, release schedules, etc can be exposed to let users change them, and hence manipulate what appears in their Calender. Drupal Date filters can also be used to show only events completed till date, or all upcoming events.

For the proposed Timezone support, Drupal already has built in Timezone support, so that wont be an issue integrating with Calender.

Drupal DateApi already provides an iCal Parser, so that can be used in conjunction to achieve the iCal import and export feature (Nevertheless, Views on which Calender module is based, already has a plugin Views iCal Export which can be used, but iCal imports are tricky)

And for the feature request by Maria, in specific categories of Events, options like "I am attending"(FUDcon) can be added, or "I am looking forwards to it"(a new Release) , using Drupal Taxonomy Vocabularies. And subsequently the code from Notifications/Subscriptions can be used to Send Notifications, and updates, etc)

And as Juan says, if we want logs of meetings, or meeting notes, all we would need to do is add a field to the Event Content Type. This could also include preconference materials

A discussion at https://fedoraproject.org/wiki/Talk:Fedora_Calendar_Project, raised the concern about having individual calenders in Drupal. This can be achieved in by Cloning the regular Drupal view of our global calender, and setting up a new filter according to the current uid of the user. A bit tricky if we have varying definations of what an "individual calender" means (maybe on likes, interests, or authorship) but achievable no doubt, with any diversity of parameters.

* Final deliverable of the proposal at the end of the period * A Drupal "Feature" which can be managed by the Drupal Feature module, which will have all the proposed ideas bundled together. * A rough timeline for your progress * May 21st - 25th : Setting up the Drupal Environtment, and Researching all the available options in Drupal, to see if any better option is available for a particular thing. * May 26th - May 30th : Setting up the Calender Module, Node Reference Module, and Researching their Bugs list and Issues list for any major incompatibilities that might be there with the other module we would be using. * May 31st - June 7th : Setting up the Event Content Type, with the necessary Fields, and using the User Reference Module to let an user with permissions to assign "people Responsible for Event". And play around to find it nothing breaks. * June 8th - June 10th : Setting up a taxonomy Vocabulary to Categorize events by "in progress", "not completed", etc. And associating the Taxonomy to the Event Content Type. * June 11th - June 14th : Setting up a poormans cron to remind users "responsible for an event" if there are any of their events in which there is any discrepancy between the Server Date, and Date of Beginning and Completion enetered by the creator, taking into consideration the Category of the Event * June 15th - June 20th : Set up another Taxonomy Vocabulary which can be edited by the Creator of the Content, to categorise the Event as say a "Fedora Team Meeting", "Release Schedule", etc. Discussing with the mentors to setlle for exactly the categories to be included. *June 21st - June 27th : The Calender Module be set up to extract and display the Published Events, in a Calender like format. Then Theme the Calender blocks, to add a "+" icon which would be visible to people with required permissions, and would let them create a new Event on that particular date. * June 28th - July 2nd : Discuss with the Mentor and decide upon what Filters exactly to be exposed to users, to let them "select" particular data. And implement them. * July 2nd - July 6th : Imeplement the iCal export feature, to let users view the data on any popular iCal viewers. * July 7th - July 14th : Set up a Taxonomy Vocabulary to implement the "I am attending feature", to let users show their support for the event. And set up individual views with arguments to lets users have individual Calenders of Events they are attending or organising or are responsible for. And integrate it with the Workflow module and Notifications/Subscriptions to send users Notifications of upcoming events related to them (they are attending, or are responsible for) * July 11th - July 15th : Set up the test Drupal Environment in which the Feature has to be used in the end, and then import the Feature, and check for any part of the Code that breaks * July 15 - July 30th : Theming The Different components used, so that it goes well smoothly with the theme of the Drupal Environment in which it has to be deployed. Check for Cross Browser Compatibility, etc * July 31st - August 10th : Attend to bugs, Broken pieces of Code, and any issues in Usability people using it point out. * August 10th - August 12th : Deploy the Project. * August 13th - August 20th : Any unforseen issue that might come up.