I’ve planted the seed that I hope will grow into the kind of community site that defines community the old-fashioned way — people living in the same place — as well as in the modern sense of network affiliation. The project has raised a bunch of technical, operational, and aesthetic issues.
Technical: Django is working well for me, but I haven’t invested deeply in it yet. Patrick Phelan, a web developer I’ve corresponded with for years, reminded me the other day that my reluctance is strategic. With any framework, buy-in cuts two ways, and you should never take unnecessary dependencies. Patrick noted that I am using WSGI, a Python-based Web Server Gateway Interface, to connect Django by way of FastCGI to my commodity hosting service. And he pointed out that a rich WSGI ecosystem is evolving that could enable me to proceed in the minimalistic style I prefer, integrating best-of-breed middleware (e.g., URL mapping, templating) as needed. If the preceding sentence makes any sense to you, but you haven’t heard about Paste and Pylon (as I had not until Patrick pointed me at them), then you might want to watch the Google TechTalk that Patrick recommends.
Operational: I’m doing this project on $8/month commodity hosting because I want to understand, and explain, how much can be accomplished for how little. Bottom line: amazingly much for amazingly little. For years I’ve supplied my own infrastructure, so I never had the experience of using a hosting service that provides web wrappers to: create subdomains; provision databases and email accounts; deploy blogs and wikis. Sweet! At the same time, though, I’m struck by how much specialized cross-domain knowledge I’ve had to muster. For example, the first service I’ve built on the site, a community version of LibraryLookup, relies on programmatic use of authenticated SMTP to send signup confirmation messages and status alerts. I figured out how to do that in Python, but it took some head-scratching, and my solution isn’t particularly robust. For me, spending an extra buck a month for a more robust solution (ideally delivered as a language-independent web service) would be an option I’d consider. For many people, though, it would be an enabler for things that otherwise wouldn’t happen. There’s a ton of opportunity in this space for buck-a-month services like that.
Aesthetic: For now I’m going with an aggressively Web 0.1 style, a la del.icio.us and craigslist. My wife’s first comment was: “So, you are going to pretty it up a bit, right?” I dunno, you can argue it both ways. The current arrangement has the advantage of being The Simplest Thing That Could Possibly Work. But virtuous laziness aside, it may be that craigslist, in particular, has validated the Web 0.1 aesthetic for community information services. Or it may be that my wife’s first reaction was correct, and I’ll have to look for a volunteer designer. We’ll see.
None of these issues are top of mind for me now, though, because they’re all trumped by a conceptual issue. How do I demonstrate methods of syndication, tagging, and service composition so that people will understand them and, more importantly, apply them?
Consider the version of LibraryLookup that I’ve built for this site. The protocol is, admittedly, abstract. It invites you to use your Amazon wishlist not only for its existing purposes — keeping track of stuff you’re interested in, registering for gifts you’d like to receive — but also as an interface to your local library.
Dan Chudnov thinks this is a questionable approach, and his point about interlibrary loan is well taken. But we don’t have through-the-web interlibrary loan in my town, and if we did, I’d still want to use Amazon as my primary interface to it. To me, it’s obvious why and how to wire those things together. To most people, it isn’t, and that’s the challenge.
To meet that challenge, I’m stepping back from some things things that have been articles of faith for me. For example, this service does not yet notify by way of RSS. Just email for now. Of course I can and will offer RSS, but in my community (as in most) that is not the preferred way to receive notifications.
Everything else about this service will be unfamiliar to most people:
- That an Amazon wishlist can serve multiple purposes.
- That LibraryLookup is OK with Amazon. (It is. Jeff Bezos told me so.)
- That we should expect to be able to wire the web to suit our purposes.
The lone familiar aspect of this service, I realized, is that once in a while you get an email alerting you that something you want is available. Everyone will understand that. But the rest is going to be hard, and I’ve concluded that evangelizing RSS in this context would only muddy the waters even more.
In other ways, though, I’m pushing hard for the unfamiliar. It would be an obvious thing to use Django’s wonderful automation of database CRUD (create, read, update, delete) operations to directly manage events, businesses, outdoor activities, media, and other collections of items of local interest. People are familiar with the notion of a site that you contribute directly to, and I could do things that way, but for the most part I don’t want to. I want to show that you can contribute indirectly, from almost anywhere, and that services like Flickr and del.icio.us can be the database.
I got a great idea about how to approach this from Mark Phippard, a software guy who lives in my town (though we’ve not yet met in person). Mark wrote to offer technical assistance, which I’m glad to receive, but I wrote back asking for help breaking through the conceptual barrier. How do I motivate the idea of indirect, loosely-coupled contribution?
Mark mentioned that one of his pet peeves is the dearth of online information about local restaurants. You can find their phone numbers on the web, but he’d like to see their menus. That’s a perfect opportunity to show how Flickr can be used as a database. If Mark, or I, or someone else scans or photographs a couple of restaurant menus and posts them to Flickr, tagged with ‘restaurant’ and ‘menu’ and ‘elmcityinfo’, we’ll have the seed of a directory that anyone can help populate very easily. Along the way, we might be able to show that Flickr isn’t the only way to do it. A blog can also serve the purpose, or a personal site with photo albums made and uploaded by JAlbum. So long as we agree on a tag vocabulary, I can federate stuff from a variety of sources.
And now, I’m off to collect some local restaurant menus. A nice little fieldwork project for my sabbatical!
There is a link typo on the elmcity.info “seed” link.
Yup the seed link has an extraneous “l” after “elm”. Or maybe it is a test?
“That’s a perfect opportunity to show how Flickr can be used as a database. If Mark, or I, or someone else scans or photographs a couple of restaurant menus and posts them to Flickr, tagged with ‘restaurant’ and ‘menu’ and ‘elmcityinfo’, we’ll have the seed of a directory that anyone can help populate very easily.”
Yes, and one could then use flickr’s notes to append comments on the menus themselves, like “they call THAT chutney sauce?” or “who charges $18 for 3 mushrooms?” or just plain “Yummm”
PS – and hook it up to a service like http://opentable.com/ that allows you to enter RSVPs via the web
“an extraneous “l” after “elm”. Or maybe it is a test?”
Heh. Of my own dyslexia :-) Thanks, fixed now.
“one could then use flickr’s notes to append comments”
Exactly. However I also want make it plain that Flickr is one of many complementary ways to achieve the same goal. As I told a friend this afternoon, we are within shouting distance of making Unix-style pipeline composition something that regular folks do fairly easily and naturally on the web.
I like really the idea of using tags on flickr to drive content but that seems to leave it pretty open to spammers/hackers. For example, I could tag my advertisements (or worse yet, porn) with the same tags – ‘restaurant’ and ‘menu’ and ‘elmcityinfo’. Since your site is pulling images with these tags, my advertising now shows up within your site. I don’t mean to rain on the parade, becuase I really like the idea of wiring these services up. Is there an easy way to prevent this type of bad behavior?
Misuse can be a real pain. One solution may be to offer an Atom blog service where restaurants (for example) with an OpenID may comment-add their latest menu by attaching a scan, or a content file (svg, pdf, doc, etc.) or by pasting it in from another application – like a lot of us did with Radio Userland. The service should spot valid content types and handle them or send out an email suggesting the nearest compatible alternative.
Sam Ruby has implemented OpenID comments: see “Unobtrusive OpenID” on http://www.intertwingly.net/blog/2006/12/28/Unobtrusive-OpenID
“I like really the idea of using tags on flickr to drive content but that seems to leave it pretty open to spammers/hackers”
Absolutely correct. And that could kill this thing in the cradle. Of course I can make it fully moderated, and will if necessary. But what I want to try first is a one-click abuse report that immediately yanks the item and places it on a review list. Of course that opens things up for a denial of service, where somebody reports everything as abusive, but it’s just something I want to try.
“Misuse can be a real pain. One solution may be to offer an Atom blog service where restaurants (for example) with an OpenID may comment-add their latest menu by attaching a scan”
That’d be a cool approach. In keeping with the theme of not introducing too much leading-edge stuff, through, I might be willing to coordinate directly with restaurant owners (and other businesses). There aren’t that many restaurants in this town :-)
An easy way to do that would be to coordinate directly with them and establish the trusted accounts (at Flickr, say) from which we’ll be willing to receive stuff.
If you are interested in WSGI-based frameworks and Ben’s talk, you might also find this tutorial I wrote useful:
http://pythonpaste.org/do-it-yourself-framework.html
Maybe the second link (the one just after my name) was supposed to be to the comment I left on your earlier post (at http://blog.jonudell.net/2006/12/18/trailing-edge-requirements-for-a-community-app/#comment-49 )?
My only concerns with your approach are social. It routes around a more direct path that would engage your local librarians, and, if you only ever look at amazon’s catalog, you might never find out about unique materials held by your local library (local history, archives, records, whatever they might be). This seems to counter the “old-fashioned.. people living in the same place” objective. If you never tell the people at your local library that you’re interested in materials they don’t have, they don’t gain knowledge about the interests of their community members, and can’t take that feedback from you (or your neighbors who also choose this route) to adjust their collecting patterns to fit your needs. Maybe there’s a way to work with them to ensure that this useful feedback doesn’t get lost, but without overwhelming them with a flood of requests?
Oh, and, New Haven is the one true Elm City. :)
-Dan
So you think the “average” person will have FlickR and del.icio.us accounts in addition to joining your site?
(It would be nice if those guys would start supporting OpenID.)
Jon: Looking at the elmcity site I think the decision to stay with minimal prettiness (Web 0.1) works fine so far. But I started to think that it may not scale. Perhaps you’ll want the service to be self-limiting to a number of sources that the user group can manage through the interface. But it occurred to me that even for a community like Ann Arbor where I live (once upon a time, pre-Dutch disease, also an Elm City) the number of things that would show up each calendar day from sources now available would be unmanageable as a simple list.
this would be true even if the user community were very small, like just the people on my block, because the number of relevant sources is still very large.
It wouldn’t be smart to make dealing with this issue an immediate priority, as the first thing to do is the “pipe-laying” you are now engaged in. But maybe if I post this observation, some folks will suggest alternative interfaces for the calendar that could re-represent the listed events.
“It wouldn’t be smart to make dealing with this issue an immediate priority, as the first thing to do is the ‘pipe-laying’ you are now engaged in.”
Exactly. There are lots of ways to filter, order, render, and federate result sets, but first ya gotta have result sets to work with!
“It routes around a more direct path that would engage your local librarians, and, if you only ever look at amazon’s catalog, you might never find out about unique materials held by your local library (local history, archives, records, whatever they might be).”
I agree. These things aren’t mutually exclusive, though, or anyway shouldn’t be. Ideally you wouldn’t only use Amazon’s catalog, you’d merge it with the local one.
I’m also trying very hard to directly engage local librarians. Among other things, I’d like to help them be better stewards of info that doesn’t necessarily live /in/ the library, but relates to the life of the city and needs stewardship. So for example, archival records at city hall. As all this stuff comes online, and can be federated, the scope for the librarians’ talents enlarges.
Speaking as part of the lazy web, I wonder what hosting company you chose. I’m looking to set up a new site, and $8/month sounds nice.
“I wonder what hosting company you chose.”
BlueHost, based on:
http://www.infoworld.com/article/06/05/24/78521_22OPstrategic_1.html