I have sailed a few times and had itinerary changed because of weather or rough seas. It can really put a damper on your whole trip. Yes, many of us who have sailed a lot don't care that much where we go but SOME people do. These changes happen even when its NOT hurricane season, as it did to us in January, 2003.
Clearly, cruiselines are not responsible for the weather or the roughness of the seas. But they are responsible for the substitute itinerary and for communicating with passengers. If the change was made in time to notify passengers of the change before they left home, they should have been notified and given the option to sail or not to sail, IMHO.
I'm very familiar with the contract and I know they have the "right" to make changes and in cases where the cruise is in process, that works fine for me. Keep us safe, thats the top priority. But in the case of the diversions to Canada, the cruiseline knew before the cruises about the itinerary change. At the very least, customers should have been notified in advance of their arrival at the port. Perhaps its time that the cruising public woke up to the one-sidedness of the cruise contract and demanded better treatment. In what other industry do you pay your money, forfeit your right to a refund 60 days before the service is rendered, and accept whatever product the industry chooses to deliver? Even the airline industry (I shudder to say this... but I know its the first thing that came to your mind) is required to compensate passengers if they don't deliver the expected service.