There are a lot of good ideas in there. I just finished reading them all. One thing I noticed people comment on relates to trucks and buses and such causing slow traffic notifications for other drivers. It seems like everyone commenting is saying that these slow vehicles shouldn't create those notifications. There is a problem with that which may be being overlooked. It's one thing if you're on a multi-lane road because people can go around those slow vehicles and then it doesn't actually slow down the traffic. But when you're on a one lane road and get behind a slow vehicle, you could be stuck there and end up with a huge backup behind them. Not all slow vehicles are kind enough to move out of the way to let people around them and will just let the backup grow. It's a tricky situation because there are pros and cons no matter how you handle it. Do you ignore their data so they don't make the road slow and then people get stuck behind them or do you use their data so people hopefully don't get stuck behind them, but then you may slow down a road with multiple lanes that easily allows people to pass the slow vehicle. I'm not sure the best way to handle that, but I think it needs to be considered when making that decision. If we could set how many lanes each way there is on a road, then that could be used to handle this situation very well. I know we can't really show the location on multiple lanes due to limitations in GPS accuracy and it wouldn't even have to show in the client, but to be able to say how many lanes (allow different numbers for each direction) would allow the routing to handle certain issues like this more easily. Basically, if there is more than one lane in the given direction, the truck/bus/etc. either doesn't affect traffic speeds or else is has a low effect on the speeds. For example, one truck might count as 1/10 of a normal car for speed calculations. If there is only one lane, it counts equally because it would affect anyone behind it.
Different kinds of restrictions such as height, weight, and width can be useful. If you let the user create a profile for each of their vehicles that includes those numbers, then the user can be routed around any areas that aren't acceptable. Let's say someone just bought an RV and had never paid any attention to bridge heights before. Waze can be used for routing after the person sets up their profile and it will route around any low bridges. These types of restrictions are useful for more than just semis. Yes, it would take a lot of work to get set up, but I think it's worthwhile. I would recommend setting "unlimited" to these values for all streets by default and then let people edit them as needed (probably only through the editor).
I'm not sure if this counts as a navigation type, but including some extra road design hazards (set us as properties for road segments) could be useful, such as steep grade. Long, steep grades can be dangerous for large vehicles like semis. Others can include things like No Shoulder and Narrow Road. For example, in Dexter, MI there is a bridge over a road. If you go under the bridge, it allows 2-way traffic, but you'd be hard pressed to fit two cars side-by-side in there at a time. Drivers have to be careful of traffic coming the other direction when going through there. The No Shoulder option is mostly useful for areas where you might be driving on the edge of a mountain and only a guardrail is between you and the edge or between you and the cliff rising up on the side. It's a good warning to let drivers know that stopping isn't going to be possible without blocking traffic.
And I think the best way to handle people using Waze while walking, biking, etc. is to have an option easily accessed to disable saving your speed. That or as others said, have profile types to indicate what you're doing and those types don't save your speed. I would *not* set an "Other" profile type to not save your speed. "Other" should save speed because it could be a valid type for speed. We should just have the various types that we don't want added and let those not track speed.
I don't know how many emergency vehicles would use Waze, but perhaps they would in more undeveloped countries. If there appears to be enough use, then I agree that those items in a profile should also not save speed or generate any form of map errors as they can drive ways that are not normally allowed and bypass stopped traffic.
For tow trucks, if they enough also use Waze, or if you want to just add a profile type for it since that would be easy to set up if profile types are added, I would have those save speeds only while moving. Most would likely not stop Waze when they stop to pick up a vehicle and that would cause traffic problems. Let them record speeds as they do a lot of traveling and that is helpful, but just don't record them when stopped. Yes, that means they don't show slowdowns at lights or stop signs, but that's what other Wazers are for. I might also suggest automatically generating a "vehicle stopped" warning if the tow truck is fully stopped with Waze running for > 3 minutes. That should be enough time to avoid showing it at an intersection while showing it when they are picking up a broken down vehicle. The warning should go away immediately when the tow truck starts moving rather than on a timer (though there could be a max time). That part is optional because the tow truck driver could just enter a stopped vehicle warning when they arrive. I just am not sure if they would do that and an automatic option would help.
It would be useful for people in cities to have an option for routing using public transportation. This would make use of data (not yet available) from taxi profiles, bus profiles, and train profiles. I would include subways, but GPS isn't going to work there so you'd have to either use average speeds of subways or something to figure out routing. Note that subways could just be designated as points with an "underground" layer connecting them that is only shown in the editor and doesn't have to be accurate other than to connect the points in the right order (yes, that's getting really far afield). Anyhow, the way it would work would be to determine the quickest way from point A to point B using the various types of public transportation including walking (just use an average walking speed for calculating that; don't track it). It would also need to keep current schedules and routes (users can adjust those themselves and maybe we could get that from some third party that maintains the information). This is definitely something that would take a lot of work to get right, but we are already tracking data and it would just need some extra effort for that. As far as tracking speeds, I would suggest that if someone is using routing, that it automatically changes over from one transportation type to another if the person follows the route provided so they don't have to change it themselves. Then you can more accurately obtain public transportation speeds. I'm not sure the best way to handle them going a different way... maybe leave them on the previous type with a warning on the screen of that? Anyhow, it's a lot of work and I wouldn't put it ahead of other more important features. But I would consider it and if it sounds like something we'd like to do in the future, I'd keep it in mind when designing features so that those features can support that whenever it does get added.
And I absolutely support the idea of multiple new car icons. I think I'd do it in one of two ways:
If profiles are added:
Allow the user to select the color of the vehicle icon where you currently select your icon. Then, on the new profile screen, you select what kind of vehicle you are using and your icon will match that type using the color chosen. So if I choose Silver and Car, I get a silver car. If I choose black and truck, I get a black truck. This allows for multiple colors for multiple vehicle types without cluttering the interface.
If profiles aren't added:
Put a color selection dropdown and a vehicle selection dropdown where the current icon selection is. Based on the combination of those two dropdowns, you'll get an icon to match. This prevents having to display a lot of different icons in the interface while still offering some nice customization.
In either option, I'd include the following vehicle types: Car, Pickup truck, Semi without trailer, Semi with trailer, Commercial style box truck, Police car, Ambulance, Fire truck, Tow truck, Motorcycle, Bus, Taxi, Train*, Bicycle**, and Pedestrian**.
* - Trains only if we start showing train tracks.
** - Bicycles and pedestrians are there only if we have profiles and those two items would be set to never save speeds.
Waze running on Samsung Galaxy S3.