Version 1.0, Final as of 12/12/2007 Penn State Collaborative Project: Google Calendar Integration FEASIBILITY REPORT Preface This document was generated by the Google Calendar Integration project team as part of a collaborative project undertaken in Fall 2007 as part of a Penn State senior-level class project for an IT systems integration course. For this project, the team together with George Kroner, Solutions Engineer for Blackboard, developed a Building Block to integrate a user’s Google calendar with the calendar built into the Blackboard Learning System product. The final product has been shared as an open source project on the OSCELOT web site for use by all. Document Owner The primary contact for questions regarding this document is: Jeff Gartman, Google Calendar Integration Team Participants George Kroner, Solutions Engineer, Blackboard Developers Network Brian Cameron, Professor, College of Information Sciences and Technology, Penn State University Jan Poston Day, Senior Director, Blackboard Client Engagement Penn State Project Team Jeff Gartman, Project Manager Carolyn Herbert, Student Consultant Danielle Booth, Student Consultant Aaron Lardieri, Student Consultant Pat Morton, Student Consultant Special Thanks Julia Leon, Emory University Josh Duncan, LeTourneau University 1 TABLE OF CONTENTS INTRODUCTION ..................................................................................................................................................................... 3 PURPOSE OF FEASIBILITY REPORT ............................................................................................................................................ 3 BACKGROUND INFORMATION ABOUT THE PROJECT .................................................................................................................. 3 PROJECT APPROACH ................................................................................................................................................................. 3 BUSINESS GOALS AND OBJECTIVES .......................................................................................................................................... 3 PROJECT GOALS AND OBJECTIVES ............................................................................................................................................ 3 ASSUMPTIONS ........................................................................................................................................................................... 3 CONSTRAINTS ........................................................................................................................................................................... 3 FEASIBILITY AND DESIGN .................................................................................................................................................. 4 ARCHITECTURE......................................................................................................................................................................... 4 RISKS ........................................................................................................................................................................................ 4 RESOURCE INFORMATION AND NETWORK DISCUSSION ............................................................................................................ 5 SECURITY ARCHITECTURE ........................................................................................................................................................ 5 STANDARDS COMPLIANCE ........................................................................................................................................................ 5 EXTERNAL SOFTWARE REQUIREMENTS .................................................................................................................................... 5 SYSTEM DEPENDENCIES ........................................................................................................................................................... 5 USER INTERFACE ...................................................................................................................................................................... 5 SCREENSHOTS .......................................................................................................................................................................... 5 OTHER SOLUTIONS CONSIDERED .............................................................................................................................................. 7 FUTURE CONSIDERATIONS ................................................................................................................................................ 8 CONCLUSION ........................................................................................................................................................................ 10 2 INTRODUCTION Purpose of Feasibility Report The intention of this report is to lay out a definition of the Google Calendar Integration project for the sponsor to reference. The report includes business goals and objectives which can be updated as changes arise. Background Information about the Project Blackboard would like to integrate its calendar with Google’s calendar to satisfy a strong desire in the user community to have a more seamless and integrated user experience. Teachers often use the calendar feature for class content, but students would like to synchronize Blackboard’s calendar with other external calendars such as Google. Project Approach This project was first approached from a theoretical standpoint. The team explored the various options to integrate Blackboard and Google calendars. After determining the feasibility of each option, the team selected the best choice and designed a prototype based on use cases. Business Goals and Objectives Goal: Blackboard desires to support the needs and requests of its user community. Objective: Enhance the functionality of the Blackboard Learning System, promote the use of Web 2.0, and add to the over 300 enhancements and extensions available from the Blackboard Developers Network. Project Goals and Objectives Goal: Satisfy the user community’s request for calendar synchronization with Google. Objectives: Understand the feasibility of integrating the Blackboard calendar with Google’s calendar. Develop use cases to show function requirements of solution. Utilize a proof-of-concept tool to synchronize a Blackboard calendar and a Google calendar. If successful, this project will provide benefits which support corporate goals and objectives. A functional proof-of-concept tool can further be extended for use across the Blackboard Learning System. This achievement can be added to the enhancements on the Blackboard Developers Network thereby satisfying the user community’s request for integration with Google calendars. Satisfied clients will be inclined to continue business with a company who responds to the user community. Assumptions We assume: We will be able to acquire a server for development purposes. This project is technically possible. We will gain experience working with distributed teams. We will receive timely issue resolution from the client. The client will be able to leverage expertise to assist us with integration. The scope of the project will not change during the given timeframe. This experience will be valuable for both parties involved – Blackboard will receive a useful calendar synchronizing prototype to extend if desired, and the Penn State team will gain valuable experience in a real-life business situation. Constraints This project is subject to the time constraints of one academic semester totaling 16 weeks. Another constraint is the limited development skills of the Penn State team. If we are unable to secure a development server, then we will be severely limited in what we can accomplish. Also due to the short timeline, the initial prototype will launch with limited features. 3 Our critical dependency is obtaining a server or some other testing and development space. Once that is no longer an issue, this dependency will shift to keeping that server or testing space uncompromised. Another critical dependency is making sure the team has knowledge of both XML and JAVA languages. This project has no other projects upon which it is dependent. FEASIBILITY AND DESIGN Through working with Blackboard, we have learned that this project and our design are feasible. Our design is based off of collaboration with the Penn State team and our Blackboard sponsor as well as suggestions from Blackboard users from other universities. The following sections detail the design, including its risks and other important information. Also included are screenshots of our solution and other plausible solutions. Architecture Google Calendar is capable of producing an XML feed which has a hyperlink that will be utilized by the Blackboard code we develop. This will allow Blackboard to retrieve the calendar information from Google Calendar. It will then display the Google Calendar information in a “My Google Calendar” module. Each event title will be a link to the event details. The user can edit and save those details as long as they are logged into their Google account; this provides quasi-synchronization functionality. The Google Calendar data will not be stored in Blackboard’s database to avoid issues related to privacy and maintaining a database of synchronized Google Calendar events. Since the data will be in a simple XML format, it will be easier to display the information without heavily relying on Blackboard’s internal code. We designed our solution to integrate Blackboard with Google Calendar in the following way: Blackboard Requests XML Feed via URL (this is the code we create) Google Calendar XML Feed Blackboard Calendar (Display) Legend Request Direct Data (not stored) Display Figure 1. Blackboard and Google Calendar Integration Diagram. Risks In addition to solutions, the team is also considering risks related to the development of the system. These risks are documented below. Additional risks may exist that are not listed. Risk Event Cost of Event Likelihood of Event Mitigation Strategy Unable to find a way to sync Google calendar with Blackboard High Low Blackboard unwilling or unable to provide us with their private API High Low None, though project would not be a failure. The work completed would still support the initial goal to find out if synchronization is technically feasible. Penn State team could sign agreements to not publicize the private API. Table 1. Risk Mitigation Chart. 4 Resource Information and Network Discussion System resource considerations are minimal for this project. The Blackboard suite will have certain requirements, but our solution will require a negligible amount of system resources. Our solution is a specific part of the Blackboard suite, and will not affect the LAN or WAN. The code we develop will reside within the Blackboard software on the server it is installed. Access to our solution is drawn in the flow chart of the Architecture section of this document. Bandwidth is not an issue as size of the Google Calendar data retrieved is negligible. Security Architecture Security of the system is not a significant concern due to the nature of this project. Blackboard already utilizes authentication and authorizations with user login to the system. Only authenticated users, therefore, will have access to the My Google Calendar module. The main security concern is related to handling the Google XML feed URL. When a user inputs their XML feed URL, there will be a check that verifies the URL is for a Google account. This will prevent a malicious URL being inserted into Blackboard. Standards Compliance We will comply with any Blackboard standards. As of now, no standards have been identified. External Software Requirements As long as on-site development occurs, all that is required is a testing server to view the design in testing and make updates, corrections, or comments. If we perform development, we need the Blackboard Virtual Image; Penn State will provide a server. Once the solution is in place, no external software is required. System Dependencies There are no dependencies for this solution. However, depending on how it is viewed, the solution is contingent on the presence of an Internet connection for a Blackboard user. User Interface The user interface for our solution will be simple and intuitive. This solution requires the addition of a module similar to that of the current Blackboard calendar. Google Calendar events will show up in a “My Google Calendar” module, for which code will need to be developed. Events created in the Blackboard Calendar also show up in the “My Google Calendar” module. Screenshots The following images show screenshots of the first iteration of our solution. 5 Figure 2. Blackboard Homepage Screen. Figure 3. Adding a Feed. 6 Figure 4. Successful Addition Confirmation. Other Solutions Considered The team considered several possible solutions: Synchronize the Google calendar to the Blackboard calendar Calendar events created in Google are sent to the Blackboard calendar. However, events created in the Blackboard calendar are not reflected in the Google calendar. Therefore, the development focus is shifted more towards Blackboard with the Blackboard API receiving and formatting Google data. The team believes this is the best method since Blackboard resources are readily available. Within this scenario, the team considered three different methods of transferring Google calendar data. (1) iCalendar format (.ics): This is a standard of calendar data exchange also abbreviated as iCal (not to be confused with Apple’s application). It can be used to export data from Google Calendar to Microsoft Outlook or Google Calendar to Apple iCal. Preliminary research led the team to believe this standard would not have had advantages over our proposed use of the calendar XML stream. Also, the team is unsure if it is technically feasible to use iCalendar for integration. Due to time constraints, the team will not investigate iCalendar any further. (2) HTML format: The provided link can be used to embed a read-only copy of the Google calendar on a webpage without requiring the user to log into his/her Google account. While it would be convenient for a user to bypass logging in, it is undesirable to have a separate Google module on the Blackboard space. The Google calendar information should display in the Blackboard calendar module. Therefore, the team decided against the HTML format. (3) XML feed: The team believes this is the best option which allows Google calendar information to be displayed in the Blackboard calendar. The team is familiar with XML and believes an XML solution can be extended to integrate other calendar applications (such as?) with XML feeds. This particular mode of integration also provides synchronization-like functionality, as changes to event details can be immediately reflected in the My Google Module provided the user is logged into their Google account. The team also considered storing Google Calendar information in a Blackboard database but decided that there is no functional or business reason to do so. In addition, it would introduce technical and privacy challenges. As long as there is a live feed from Google to Blackboard there should be no reason to store Google events in a database. Synchronize the Blackboard calendar to the Google calendar. In this scenario, calendar events created in Blackboard are sent to the Google calendar. However, events created in the Google calendar are not reflected in the Blackboard calendar. This scenario would focus 7 more on Google development than Blackboard development and undermine the business objective of adding enhancements to the Blackboard Learning System. Also, the team has limited access to Google resources which could be challenging. Synchronizing the Blackboard calendar to the Google calendar is not recommended. Complete synchronization between Blackboard and Google calendars. Calendar events created in Blackboard are sent to the Google calendar, and events created in Google are sent to the Blackboard calendar. While this solution may generate the highest user community satisfaction, the team feels this solution is out of reach considering time constraints and inexperience with development. FUTURE CONSIDERATIONS Due to time constraints, the team was unable to explore and develop additional functionality for the Google integrated calendar module beyond the scope of this project. The following are additional functionalities recommended for future versions of the integrated calendar module. Exportable formats: The Blackboard calendar module supports importation of Google events, but currently there is no functionality that exports Blackboard events to the Google calendar. Providing a Blackboard RSS feed would allow the Google calendar to receive events created in Blackboard. Additionally, this RSS feed would complete full synchronization between the Google and Blackboard calendars. The user community also desires the ability to synchronize the Blackboard calendar with other external calendars in addition to Google Calendar. Providing an ICS format (a standard also known as iCalendar) will allow users to export their Blackboard events to Apple iCal and Microsoft Outlook. Integrate My Google Calendar events in My Calendar: My Google Calendar is a separate module from My Calendar. Events created within My Calendar are added to the list in the My Google Calendar module and displayed on the daily, weekly, monthly, and yearly calendars of the standard My Calendar module. My Google Calendar only displays a list of events from the XML feed and does not add these events to the graphical calendar that displays Blackboard events. Figure 5 shows the current My Calendar and My Google Calendar modules. Notice fragmentation of events—Google events do not show in My Calendar. Figure 5. Current My Calendar and My Google Calendar modules. In order to maximize the benefit of imported Google events and to satisfy the user community, we recommend the integration of Google events with the list in My Calendar and the graphical calendar displays. While My Calendar events show up in the My Google Calendar event list, Google calendar 8 events do not show up in Blackboard’s graphical calendar display. This is due to a current technical limitation with the Blackboard Learning System. With this integration, users can see both Google and Blackboard events side by side have the ability to use their calendar as effectively as possible. Colors could be used to distinguish between the different calendar events. Allow multiple Google Calendar feeds: My Google Calendar currently accepts one XML feed from Google. Adding functionality to manage multiple Google calendar feeds would be useful in several scenarios: o A user has more than one Google Calendar: A user may have one private Google Calendar for personal events and a separate public Google calendar as a work or club schedule. The user does not want to combine Google Calendars to generate one XML feed due to exposing sensitive personal information. o A user would like access to a friend or family’s schedule. o A user wants to manage a group schedule: It is often challenging for groups to find common meeting times. If an RSS feed is created to export Blackboard events to the Google Calendar, then full synchronization between Blackboard and Google Calendars can help group members find a common time to meet. This is accomplished by exporting each member’s schedule, comparing all the schedules on Google Calendar, and picking a common time that works for everyone. Once this is accomplished, the group can create a Google Calendar feed for group events which can be easily updated and displayed to all the group members. For example, if Member A suddenly adds an event in Blackboard, the RSS feed will update the Google Calendar of Member A. Members B and C who subscribe to Member A’s XML feed will see Member A’s new event in their Blackboard calendar as well. Figure 6. Potential Scenario for Group Collaboration (assumes Blackboard RSS feed is developed). 9 The following image shows a potential mockup of the RSS feed manager. Figure 7. RSS Feed Manager Mockup. Conclusion The goal of this project was determine if it is possible to integrate Blackboard’s calendar and Google Calendar events, determine what type of integration is possible between the two calendars, and provide a preliminary solution to demonstrate our findings. We discovered that the easiest way to integrate the two calendars is by importing Google Calendar XML feeds into Blackboard and displaying them on Blackboard’s home screen. While it is possible to integrate Blackboard calendar events with Google, we did not include this in our preliminary design because it requires creating an RSS feed for each Blackboard calendar. We also provide further suggestions for future integration including allowing multiple calendar feeds and integrating Google Calendar events with Blackboard’s graphical calendar. 10