@@ -0,0 +1,83 @@
2+title = "ucal Google and Outlook Integration""
5+grant_type = ["bounties"]
6+grant_category = ["App Dev: Arvo"]
18+The current ucal project has .ics support, but does not currently sync with Google and Outlook. This creates a chicken-egg problem, where users in organizations with those tools cannot reliably migrate to using ucal, because they can't correctly expose availability.
20+Tools like the iPhone Calendar app handle this by syncing from and to those calendars. This lets them handle their own native calendar events while also exposing a user's full calendar to that user. Our goal is to replicate that model in Urbit.
22+This is a project intended primarily for developer use. Once it is completed, it will:
24+ - unlock further development of ucal for end users
25+ - allow use of Urbit ucal as a single source of truth to manage a user's schedule, inside and outside of Urbit
26+ - enable future integration with WebRTC for native Urbit video calls and ephemeral chats
30+This project will produce threads used to call Google and Outlook.
32+The step of "pushing" events to Google, Outlook and other ucal users should be implemented as producing custom data structures ("cards") that a later Gall agent will route appropriately.
34+todo: find out which files the below goes into and where the ICS type is.
37+ -- modify the grow arm to take an ICS Hoon type and convert to a valid ICS calendar file
39+ -- add a converter from ICS to
41+ -- take a user's authentication info
42+ -- pull Google or Outlook ICS file
43+ -- convert into Hoon format
44+ -- push Hoon calendar events to Google or Outlook
45+ -- push calendar events to other ucal users
47+ -- unit tests of outside ICS files parsing into Hoon format
48+ -- unit tests of Hoon calendar structures into ICS
49+ -- unit test producing "cards" representing calendar event updates
50+ -- thread testing of syncing
51+ - possible external code
52+ -- handle situation when extra auth flows are needed with Google/MS.
53+ -- could require a webpage to be opened to generate an OAuth code or similar
55+This code will not need to be merged into Urbit core.
59+As a developer, I want to
61+ - input credentials for a Google or Outlook calendar
62+ - retrieve ICS files associated with those credentials
63+ - create/modify events
64+ - push out created/modified events as updates to ucal or external users
66+### Resources and Workflow
67+ - Improvements will be PRs to the https://github.com/taalhavras/ucal/ project
68+ - Contributor will check in weekly with a Foundation director
69+ - Current ucal contributors
70+ - Example article on pulling ICS files from those services: https://www.digitaltrends.com/computing/how-to-sync-outlook-calendar-with-google-calendar/
74+1) Data conversion, sync and calendar updates
75+ Estimate: 21 days - a month | Reward: 2 Stars
77+ - handle credential imput and auth flows
79+ - push updates to Google/Outlook calendars from CLI
80+ - push updates to Urbit Calendar