This is now a historical document. The service was retired in 2015.
Q: What is the elmcity project?
A: It’s a web service that:
- Collects online calendar events for geographic or topical communities
- Merges information from many sources: Eventful, Upcoming, Eventbrite, Facebook, Meetup, and iCalendar feeds published by popular calendar programs
- Creates network effects using iCalendar (ICS) feeds, in the same way that blogging and microblogging systems create network effects using RSS, Atom, and Twitter feeds
- Does not store events in a centralized database, but rather operates as a hub that merges streams of events and republishes the merged result in a variety of formats
- Is managed by one or more curators in a community, on behalf of everyone in the community
- Runs on, and demonstrates the capabilities of, Microsoft’s Azure platform
- Is released under the Apache 2.0 license at github.com/judell/elmcity
Q: Why iCalendar?
A: Please see the one-page summary.
Q: What do contributors do?
A: Please see the pictorial overview.
Q: What do curators do?
A: Please see the pictorial overview.
Q: How do I contribute events to a hub?
A: You can contribute in any of these ways:
Stan Dyck, who curates the Puget Sound Engineering Council hub, created an excellent decision chart that describes the iCalendar options.
Eventful: Post an event to a venue within your hub’s radius.
Yahoo: Post an event to a venue within your hub’s radius.
EventBrite: Post an event to a venue within your hub’s radius.
Facebook: Post an public event to the Events app on a Facebook Page.
Meetup: Make your Meetup group’s calendar public.
Q: Where do I find iCalendar feeds?
A: This is a major challenge, and also an exciting opportunity. Although there seems to be a lot of calendar information floating around on the web, most of it isn’t usefully available. Web pages and PDF files are much more common than iCalendar feeds. But those formats cannot be read, processed, and syndicated in the ways that iCalendar feeds can be.
The central goal of this project is to light up iCalendar feeds that could easily exist on the web, and should, but don’t.
Here are some strategies:
- Create your own feeds.
Maybe you coach a youth soccer team, or run a local restaurant that features musical performances, or participate in a birdwatching club whose hikes are open to the public. You can, and should, and maybe already do publish a web page about these events. But you probably don’t publish an iCalendar feed.
Here’s the strategy: Maintain the calendar information in a program like Google Calendar, Hotmail Calendar, Outlook, or Apple iCal. That way, you can publish your calendar to the web in HTML format for people to read, and simultaneously publish in ICS format for syndication. Here’s how to do that for Google Calendar and Hotmail Calendar, for Outlook 2007, and Apple iCal.
- Light up existing feeds.
In a number of cases, people are publishing web calendars without even realizing that they are also publishing iCalendar feeds. This happens most often with Google Calendar. Consider WV Get To Know Your Neighbor. The site uses Google Calendar to publish an events page. Unbeknownst to the site owner, there is an ICS link that corresponds to that calendar. The link is:
Given the email address associated with any Google Calendar, you can produce an iCalendar link of this form. The Huntington WV curator did so, and as a result the Get To Know Your Neighbor calendar is now included in the set of Huntington feeds. If you don’t know and can’t easily find the email address associated with the calendar, just ask the site owner.
Other sources of existing feeds: Eventful or Upcoming venues, Facebook Pages, Meetup groups.
Q: Why should people care about publishing iCalendar feeds?
A: For two major reasons:
- Personal information management
When you publish an iCalendar feed, people can subscribe to it from their personal calendar programs: Outlook, Google Calendar, Apple iCal, others. They can see public events (the soccer game, the musical performance) as overlays on their personal events (the dentist appointment, the birthday party).
- Social information management
When you publish an iCalendar feed, it can syndicate to one or more services like the elmcity collector. A comprehensive view of what’s going on in a town or neighborhood can therefore emerge without any central management or control. Individuals, groups, and organizations can write down their event information once, and have it propagate through the syndication network without loss of fidelity or control.
Q: OK, I’ve found or created some iCalendar feeds. How do I get the collector to collect and process them?
A: You sign into elmcity, using the Twitter, Facebook, Windows Live, or Google account you provided when you started your hub, and use the feed editor to add feeds.
Q: How can I customize the collector for my location?
A: You sign into elmcity, using the Twitter, Facebook, Windows Live, or Google account you provided when you started your hub, and use the hub editor to adjust the default settings as needed.
Q: How do I categorize feeds and events?
A: On a per-feed basis, if all of the events from a feed can be categorized, you can name that category in the elmcity feed editor.
On a per-event basis, if events in the iCalendar feed use the CATEGORIES property, it’ll come through automatically.
On a per-event basis, the Description field can also use these patterns anywhere in the text:
Q: How do I view categorized events?
A: All the formats accept a ?view= parameter. So for example:
Q: Where do curators hang out?
A: We are currently using the FriendFeed room friendfeed.com/rooms/elmcity. The room subscribes to the following sources:
- A feed of all new feeds added to all elmcity hubs
- The subset of my blog’s feed that is specific to the project
- The Pipes feed that gathers news about a related effort to improve iCalendar validation.
- Updates to the project status page.
Feel free to join this FriendFeed room. But there’s no need to do so. You can monitor activity there, or subscribe to its RSS feed, without having to register and join.