The status of this project is: ACTIVE. It's up and usable for the Cambridge area and I'm working to fill out Boston so I can advertise it.
To get the code:
hg clone http://hg.red-bean.com/wtba/
None planned; available live at where.thebus.at.
Bus schedules suck. You generally have two options: Go to a timetable and pore through a huge grid of tiny little numbers, most of which are useless at the time, or plan ahead and go to an oracle on some web site that will make incorrect decisions for you about which route to take and how long you need to walk.
The MBTA has created sets of timetable pages for both heavy HTML browsers and "mobile web" devices. They have the same content as a paper timetable, which gets more and more useless as your screen gets smaller. There's also the "Trip Planner" oracle, of course, and a "Service Nearby" page that will give you something almost actually useful - the next arrivals at a particular stop. But these two pages depend on their Google Maps mashup, which is incredibly slow and too complex to run on most phones.
We can do better.
Let's assume you know your city well enough to have an idea of which bus goes where. At any given moment, if you want to take the bus somewhere, particularly if you are out and about, you have two questions:
There may be more that one bus that gets you where you want to go, so you should be able to look at them all without flipping back and forth between schedules or stops. And since you can probably walk a few blocks before a given bus gets to one of those stops, you want to consider all the buses that will go through the whole neighborhood you're in.
You want this instantly, with no fancy animated stuff hiding parts of it from you until you click on them, because your phone is slow. Even if your phone is great, the network is slow. And by "you", I mean me - I wrote this because I wanted it and it didn't exist.
The most difficult part of all this, of course, is finding where you are. Some phones have GPS, but most don't. Apps that run on the phone can use that information, but unlike websites are only useful for those phones. I have devised two separate solutions for this.
Fortunately, Boston and environs is organized in a system of "squares". this means that any given location (that is, a logically organized set of contiguous bus stops) can be placed into a relatively usable hierarchy. If you go right to the front page, you will be asked to click through a menu of City -> Square -> Neighborhood.
Any more specific location can be represented as a RESTful URL, using a format like "/geo/42.375,-71.112". Native phone applications that can read GPS data can trivially construct this URL from it and launch the phone's web browser. From this location the set of stops within a certain radius can be selected. Writing the actual applications would be very easy.
(A geolocation could also theoretically be generated by mapping a street address, but I can't think of a use case for this.)
Either way, when you land on the resource for a particular location, all the routes that run through it will be selected and the next arrival (based on the web server's current time) for both inbound and outbound trips will be displayed. This time will represent when that particular trip first enters your "location" (i.e. entire set of stops), so it will probably be a bit earlier than the specific stop you're going to get on at. (This was on purpose - I'm always late to everything!) By clicking the arrival you can see a more detailed table including the exact time for your stop (wherever that is; the app doesn't necessarily know, because it is Not Smarter Than You), and the next couple trips in case you miss that one.
Now, of course, this is the MBTA. They're never on time. When you see the exact time for your stop, you can click on it to view a detail page, which will have a (pseudo-PUT) link for "the bus is here now". The app will record this and if anyone else looks at the same instance of that trip later on, inform them that it is running /n/ minutes early or late. This will only really be useful if usership reaches critical mass, but I'm hoping it will!
It will take some time to finish the hierarchical organization of "neighborhoods" (locations) for all of metropolitan Boston, and this will be complicated by the fact that I only live in one of its cities (Cambridge). Therefore, once the site itself is running smoothly, I plan to add a wiki-like view of the hierarchy that users (who actually live in their home cities and better understand the geographical organization thereof) can edit.
The data for this site was scraped from mbta.com using Hpricot and dumped into Postgres with Ruby/DBI. I have only been able to infer a rough idea of the schema used by the MBTA site, and certain aspects of this have been very frustrating, as not all the relevant information is exposed in the right places. This was my first database-backed app ever, so I have not worried too much about this - I have, rather, looked to the Google Transit Feed Specification for guidance. It is my goal to eventually have all the MBTA's data scraped into a database that perfectly corresponds to the GTFS model, so that the site could be "ported" to other transit systems with little effort.