From Fedora Project Wiki

Problem Descriptions

Fedora ambassadors are group of volunteers who promote and spread news to the world about Fedora OS and Fedora project. They have to organize number of events around the world from the small to large scale ( such as FedoraCon). Fedora ambassadors are using different kind of project management tools for several different tasks in an event management process. Most of the time, those utilities do not satisfy the project management requirements 100%. Also the ambassadors are working from separate places and on different events using different project management utilities. That makes budget management very complex. Using same platform by all ambassadors for event management would make the budget management easy and give effective results for their effort.


Abstract

The proposed project would be utilized to handle major project management tasks in Fedora event organizing process by ambassadors. The modules of the proposed system are

1. Task management module

2. Attendees management module

3. Report generating module

There are interconnection between the above mentioned modules. The proposed solution maintains those interconnections (case:Task management system has to inform completing some tasks to the Attendees management module for its operations). The uniqueness of the proposed event management system comparing it with current project management tools is that the proposed system explicitly focuses on the Fedora project's event management tasks.


Implementation plan


The design for the overall solution is based on object oriented programming(OOP) concepts and MVC architecture.


1. Task management module

Task management module consists of task creating and task maintaining, task completing as basic features. Task is considered an object in the implementation. The task entity in the database perspective is show in the Figure 1.


ER.png

                                              Figure 1

    Network diagram concept is used to visualize and manage the dependencies between the tasks. The task managing feature will facilitate users to update the features of the tasks (task is considered as an object according to the OOP concepts throughout the project) to record the progress of the tasks. Visualization of network diagrams is done using existing JavaScript library, “JavaScript diagramming library.: JointJS”.   The overview of the schedule is presented using Gantt charts. Existing JavaScript library, “dhtmlxGantt - Editable JavaScript DHTML Gantt Chart” is used for the visualization purpose of the Gantt charts.   The proposed normalized database tables for task management module are shown in Figure 2   Db2.png

                                              Figure 2


  2. Attendees management module

  This module facilitate attendees management for the events

  1. Registration

Registration for the event requires authentication of the users ( some kind of log in system). The authentication is done using “sign-up-with-google” facility provides by Google. This facility provides the OAuth 2.0 open-standard protocol which allows the application to access user's data after the authentication. The proposed attendees management module uses the user's Google calendar to publish the schedule of the event. Appropriate details from the attendees are collected through a form and that information is stored in the database.


2. Maintain attendees

Record of each attendee is stored in the database. Spread important announcements related to the event are sent to the attendees of the corresponding event using bulk email. Sending bulk emails to the attendees is done using Gmail API(using bulk email sending facility).


  3. Reporting module

Reporting system is developed based on the processed appropriate data in the database. The reporting system uses open source php library, “Reportico PHP Open Source Report Designer”. This library facilitate generating report in several formats. ( HTML,XML,JSON).


  Timeline for the project progress


Before May 3-

1.Familiarized with the requirements of the project

2.Contacted project mentor for clarifying the goals of the project

3.Worked on the database design of the task management module

4.Searched for open source libraries for drawing network diagram, Gantt chart and report generating


May 3 – May 10

1.Prepare the entity relationship (ER) diagram of the database of the overall solution

2.Normalize the database design


May 10 – May 17    

Prepare the database.


May 17 - May 22

Test the functionality of network diagram visualization library using test data


May 22 – May 27

Test the Gantt chart visualization library using test data


May 27 – June 3  

Test report generating library with test data


June 3- June 17

1.Working on the MVC architecture based design of the solution

2.Define all model, controller, view classes


June 17- June 24

Code the basic model classes of the solution


June 24 – July 1

Code the basic controller classes


July 1- July 8

Code the basic view's HTML


July 8 – July 20

Repeat developing model, view , controller classes based on the basic classes


July 20- July 29

Test the developed classes with unit tests


July 29

Submit the mid term evaluation


July 29 – Aug 9

Integrate “google-sign-up” to the application


Aug 9 – Aug 16

Integrate “google-calender” updating feature


Aug 16 - Aug 26

Integrate network diagram and Gantt chart to the view classes of the task management module


Aug 26 – Sep 2

Working on report generating php library integration to the application


Sep 2 – Sep 9

Integrate bulk email sending facility to the application


Sep 9 – Sep 16

Make further changes in to the code to improve the functionalities


1.Exception handling

2.Bug removal

3.Unit testing


Sep 16 – Sep 20

For documentation


Sep 20

Submit the final code